lib/knj/arrayext.rb in knjrbfw-0.0.50 vs lib/knj/arrayext.rb in knjrbfw-0.0.51
- old
+ new
@@ -285,37 +285,45 @@
# true
# end
# end
#
# res.length #=> 3
- def self.divide(args)
+ def self.divide(args, &block)
prev_ele = args[:arr].shift
chunk = [prev_ele]
+
+ if !args[:evaluate]
+ callback_eval = block
+ elsif !args[:callback] and args[:evaluate]
+ callback_res = block
+ callback_eval = args[:evaluate]
+ end
+
ret = [] if !args[:callback]
args[:arr].each do |ele|
if !chunk
chunk = [ele]
prev_ele = ele
next
end
- if yield(prev_ele, ele)
+ if callback_eval.call(prev_ele, ele)
chunk << ele
- elsif callback = args[:callback]
- callback.call(chunk)
+ elsif callback_res
+ callback_res.call(chunk)
chunk = nil
else
ret << chunk
chunk = nil
end
prev_ele = ele
end
if chunk and !chunk.empty?
- if callback = args[:callback]
- callback.call(chunk)
+ if callback_res
+ callback_res.call(chunk)
else
ret << chunk
end
end
\ No newline at end of file