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