50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/supplemental/facets/enumargs.rb', line 50
def self.wrap_enumerable_method( methodname )
m = methodname
meth = Enumerable.instance_method(m)
arity = meth.arity
case arity <=> 0
when 0
class_eval %{
def #{m}( *args, &yld )
enum_for(:each, *args).#{m}( &yld )
end
}
when 1
class_eval %{
def #{m}( *args, &yld )
args, each_args = args[0...#{arity}], args[#{arity}..-1]
enum_for(:each, *each_args).#{m}( *args, &yld )
end
}
else
class_eval %{
def #{m}( *args, &yld )
enum_for(:each).#{m}( *args, &yld )
end
}
end
end
|