A small library to easily make objects that transform input via many methods.
https://github.com/amarshall/windcharger.git
Windcharger is a small library to easily make objects that transform input via many methods.
Install as usual: gem install windcharger or add gem 'windcharger' to your Gemfile.
Declare methods as attributes by extending Windcharger::Attributes and preceding methods with attribute:
require 'windcharger'
class MyTransformer
extend Windcharger::Attributes
attribute
def foo; end
attribute
def bar; end
def not_an_attribute; end
end
MyTransformer.attributes #=> [:foo, :bar]
This isnβt very useful on its own, so include Windcharger::HashTransformer to get the transform method:
require 'windcharger'
class MyTransformer
extend Windcharger::Attributes
include Windcharger::HashTransformer
attribute
def foo
:the_foo
end
attribute
def bar
:walked_into_a_bar
end
def qux
1
end
attribute :qax, :qux
def qax
2
end
def not_an_attribute
42
end
end
my_transformer = MyTransformer.new
my_transformer.transform
#=> {
# :foo => :the_foo,
# :bar => :walked_into_a_bar,
# :qax => 2,
# :qux => 1,
# }
Add an initialize that takes some input and then transform it to each attribute in their respective methods and you have a nice transformer object.
git checkout -b my-new-feature)git commit -am 'Add some feature')git push origin my-new-feature)Copyright Β© 2013βPresent J. Andrew Marshall. License is available in the LICENSE file.