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,
  :grep, :max, :min, :min_by, :partition, :reject, :select, :sort, :sort_by,
  :take, :take_while
]
VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object

map/flat_map are disabled because its often used to map something into another format



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"