From 73fc3b5a34edb7a681e0000d2879cb4a79772945 Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 12 Mar 2010 14:00:49 +0000 Subject: rdoc update. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enum.c | 21 ++++++++++++--------- 1 file 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. -- cgit v1.2.3