Skip to content

MollsReis/filtration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Filtration pre/post method callback

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages