summaryrefslogtreecommitdiff
path: root/enum.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-12 14:00:49 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-12 14:00:49 +0000
commit73fc3b5a34edb7a681e0000d2879cb4a79772945 (patch)
tree7764295ba27ca206dcc7a6aa3789de399ef45e2a /enum.c
parent1eca24b1a5e029605241828a630ed9b83572ea0c (diff)
downloadruby-73fc3b5a34edb7a681e0000d2879cb4a79772945.tar.gz
rdoc update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r--enum.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/enum.c b/enum.c
index 4f930aec2c..63b6b7dfd2 100644
--- a/enum.c
+++ b/enum.c
@@ -2418,15 +2418,18 @@ slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
*
* If the block needs to maintain state over multiple elements,
* local variables can be used.
- * For example, monotonically increasing elements can be chunked as follows.
- *
- * a = [3,1,4,1,5,9,2,6,5,3,5]
- * n = 0
- * p a.slice_before {|elt|
- * prev, n = n, elt
- * prev > elt
- * }.to_a
- * #=> [[3], [1, 4], [1, 5, 9], [2, 6], [5], [3, 5]]
+ * For example, three or more consecutive increasing numbers can be squashed
+ * as follows:
+ *
+ * a = [0,2,3,4,6,7,9]
+ * prev = a[0]
+ * p a.slice_before {|e|
+ * prev, prev2 = e, prev
+ * prev2 + 1 != e
+ * }.map {|es|
+ * es.length <= 2 ? es.join(",") : "#{es.first}-#{es.last}"
+ * }.join(",")
+ * #=> "0,2-4,6,7,9"
*
* However local variables are not appropriate to maintain state
* if the result enumerator is used twice or more.