= Filtration
Filtration is a clean, lightweight way to filter arguments going into and coming out of methods (similar to decorators in Python).
== Usage
Example:
class Bar
def foo(x)
x + 2
end
def foo_too(x)
x + 2
end
def foo_as_well(x)
"#{x.to_s} to the max!"
end
def foo_forever(x)
"#{x.to_s} to the max!"
end
end
class Foo < Bar
prefilter(:foo){|x| x * 2}
postfilter(:foo_too){|x| x * 2}
end
randy = Foo.new
randy.foo(2) #=> (x * 2) + 2 = 6 (for x = 2)
randy.foo_too(2) #=> (x + 2) * 2 = 8 (for x = 2)
class AnotherFoo < Bar
prefilter :foo, :double
postfilter :foo_too, :double
def double(x)
x * 2
end
end
savage = AnotherFoo.new
savage.foo(2) #=> (x * 2) + 2 = 6
savage.foo_too(2) #=> (x + 2) * 2 => 8
class YetAnotherFoo < Bar
prefilter :foo_as_well, &:upcase
postfilter :foo_forever, &:upcase
end
machoman = YetAnotherFoo.new
machoman.foo_as_well('filtration') #=> "#{x.upcase} to the max!" = 'FILTRATION to the max!'
machoman.foo_forever('filtration') #=> "#{x} to the max!".upcase = 'FILTRATION TO THE MAX!'
== Requirements
Filtration stands on its own!
== Development
RSpec is used for testing, with SimpleCov for code coverage.