Wallpapering
Wallpapering is a really simple implementation of the decorator pattern for use in Rails applications
Installation
Add this line to your application's Gemfile:
gem 'wallpapering'
And then execute:
$ bundle
Or install it yourself as:
$ gem install wallpapering
Usage
Basic Decorators are classes that inherit from Wallpapering::Decorator
. They accept an object to decorate as the single argument for the initializer. They maintain the interface of the decorated object and are entirely transparent. You can add (and remove) methods if you wish, you can override methods - super will do what you expect.
to create a Decorator just do the following:
class WithSugar < Wallpapering::Decorator
def calories
super + 50
end
end
coffee_with_sugar = WithSugar.new(Coffee.new))
You can also easily decorate an array of objects
@posts.map_as(PostPresenter) # Returns an array of Presented Posts!
Contributing
Basic contribution guidelines are as follows. I'm always amenable to patches and pull requests however please bear in mind that wallpapering is designed to be pretty much the simplest thing that can work. Also no patches will be accepted without accompanying tests. Thanks :)
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Thanks
Cheers Russell for map_as