classy
Classy is a collection of metaprogramming-heavy modules which you can extend in order to give various capabilities to your Ruby classes. For example, SubclassAware lets a class know about all of its subclasses (and sub-subclasses, etc), and Aliasable lets you refer to classes via symbols (useful for creating friendly DSLs).
Examples
class Parent
extend Aliasable
extend SubclassAware
extend Templatable
templatable_attr :awesomeness, :temperature
awesomeness :fairly
aka :pop
end
class ChildA
aka :kid1
end
class ChildB
aka :kid2
end
Parent.find(:kid1) # => ChildA
Parent.subclasses # => [ ChildA, ChildB ]
Parent.new.awesomeness # => :fairly
More extensive documentation and example code can be found in the RDoc for each module (available online at rdoc.info/projects/djspinmonkey/classy) or in the spec files.
Note on Patches/Pull Requests
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright
Copyright © 2009 John Hyland. See LICENSE for details.