0.01
No commit activity in last 3 years
No release in over 3 years
A better-performing alternative to OpenStruct
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.2.9
 Project Readme

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.

  • Make sure you don’t break the existing specs.

  • Add specs for it. The specs should break with the buggy version if you’re fixing a bug, or verify the new functionality you’re adding. 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, which make it even easier to get the related changes and nothing else.

Copyright © 2009 Alf Mikula. See LICENSE for details.