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

Copyright

Copyright © 2009 John Hyland. See LICENSE for details.