classy_struct
A better-performing alternative to OpenStruct
Usage
First, create a class instance of ClassyStruct:
require 'classy_struct'
Widget = ClassyStruct.new
Next, create instances of that class the same as you would with any other class:
w1 = Widget.new
These instances are open in much the same way that OpenStruct instances are open:
w1.foo = :bar
w1.foo # => :bar
However, generated accessors are applied to the class instance (in this case, Widget) instead of the object instance. This means that accessors only need to be generated once for the class, and instances of that class get the accessors automatically.
You can also pass a Hash to the constructor, to be recursively converted to ClassyStruct objects:
w1 = Widget.new(:foo => :bar, :baz => {:xyzzy => :thud})
w1.foo # => :bar
w1.baz.xyzzy # => :thud
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 Alf Mikula. See LICENSE for details.