Method: Enumerable#take_while

Defined in:
ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb

#take_while(&block) ⇒ Object

call-seq:

enum.take_while {|arr| block }   -> array
enum.take_while                  -> an_enumerator

Passes elements to the block until the block returns nil or false, then stops iterating and returns an array of all prior elements.

If no block is given, an enumerator is returned instead.

a = [1, 2, 3, 4, 5, 0]
a.take_while {|i| i < 3 }   #=> [1, 2]


86
87
88
89
90
91
92
93
94
95
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb', line 86

def take_while(&block)
  return to_enum :take_while unless block

  ary = []
  self.each do |*val|
    return ary unless block.call(*val)
    ary << val.__svalue
  end
  ary
end