module SelfEnumerable
Constants
- VERSION
- WRAPPED_METHODS
Public Class Methods
included(klass)
click to toggle source
# File lib/self_enumerable.rb, line 10 def self.included(klass) klass.class_eval <<-eoruby include Enumerable eoruby # for every Enumerable method, e.g. #map, #select ... Enumerable.public_instance_methods.each do |_enum_method| if WRAPPED_METHODS.include?(_enum_method) if _enum_method == :partition # some special handling is needed klass.class_eval <<-eoruby def #{_enum_method}(*) (result = super).is_a?(Array) ? [self.class.new(result[0]), self.class.new(result[1])] : result end eoruby else klass.class_eval <<-eoruby def #{_enum_method}(*) (result = super).is_a?(Array) ? self.class.new(result) : result end eoruby end end end end