Module: SelfEnumerable

Defined in:
lib/self_enumerable.rb,
lib/self_enumerable/version.rb

Constant Summary collapse

WRAPPED_METHODS =
[
  :collect, :collect_concat, :drop, :drop_while, :first, :find_all, :flat_map,
  :grep, :map, :max, :min, :min_by, :partition, :reject, :select, :sort, :sort_by,
  :take, :take_while
]
VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/self_enumerable.rb', line 10

def self.included(klass)
  klass.class_eval "    include Enumerable\n  eoruby\n\n  # for every Enumerable method, e.g. #map, #select ...\n  Enumerable.public_instance_methods.each do |_enum_method|\n    if WRAPPED_METHODS.include?(_enum_method)\n      if _enum_method == :partition # some special handling is needed\n        klass.class_eval <<-eoruby\n          def \#{_enum_method}(*)\n            (result = super).is_a?(Array) ? [self.class.new(result[0]), self.class.new(result[1])] : result\n          end\n        eoruby\n      else\n        klass.class_eval <<-eoruby\n          def \#{_enum_method}(*)\n            (result = super).is_a?(Array) ? self.class.new(result) : result\n          end\n        eoruby\n      end\n    end\n  end\nend\n"