Class: Functional
Class Method Summary collapse
Instance Method Summary collapse
- #collect(&exe) ⇒ Object
- #delete_if(&exe) ⇒ Object
- #each(&exe) ⇒ Object
-
#initialize(obj = nil, func = nil, *args) ⇒ Functional
constructor
A new instance of Functional.
-
#map(&exe) ⇒ Object
map/reduce?.
- #push_method(code, *args, &exe) ⇒ Object
-
#reduce(&exe) ⇒ Object
map/reduce?.
- #select(&exe) ⇒ Object
Constructor Details
#initialize(obj = nil, func = nil, *args) ⇒ Functional
Returns a new instance of Functional.
16 17 18 |
# File 'lib/functional.rb', line 16 def initialize obj = nil, func = nil, *args @stack, @obj, @func, @args = [], obj, func, args end |
Class Method Details
.method_missing(meth, *args, &exe) ⇒ Object
5 6 7 |
# File 'lib/functional.rb', line 5 def self.method_missing meth, *args, &exe self.new.send meth, *args, &exe end |
Instance Method Details
#collect(&exe) ⇒ Object
20 21 22 |
# File 'lib/functional.rb', line 20 def collect &exe push_method "value=%s(value)", &exe end |
#delete_if(&exe) ⇒ Object
38 39 40 |
# File 'lib/functional.rb', line 38 def delete_if &exe push_method "%s(value)&&next", &exe end |
#each(&exe) ⇒ Object
42 43 44 45 |
# File 'lib/functional.rb', line 42 def each &exe return self unless exe @obj.send @func || :each, *@args, &eval( "lambda{|value|#{@stack.join( ";")};exe.call(value)}") end |
#map(&exe) ⇒ Object
map/reduce?
25 26 27 |
# File 'lib/functional.rb', line 25 def map &exe raise "Reserved for MapReduce." end |
#push_method(code, *args, &exe) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/functional.rb', line 9 def push_method code, *args, &exe name = "__meth_#{exe.object_id}" define_singleton_method name, &exe @stack.push [code % name]+args self end |
#reduce(&exe) ⇒ Object
map/reduce?
30 31 32 |
# File 'lib/functional.rb', line 30 def reduce &exe raise "Reserved for MapReduce." end |
#select(&exe) ⇒ Object
34 35 36 |
# File 'lib/functional.rb', line 34 def select &exe push_method "%s(value)||next", &exe end |