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" |