From: "ara.t.howard" Date: 2007-09-10T03:04:34+09:00 Subject: [ANN] openobject-0.0.1 NAME openobject SYNOPSIS a simple property based container that's much more capable than a blankslate but far less polluted than ruby's built-in OpenStruct. openobject is a tiny lib that couples the power of the 'attributes' gem alongside a slightly enhanced blankslate type object. INSTALL gem install openobject URIS http://codeforpeople.com/lib/ruby/ http://rubyforge.org/projects/codeforpeople/ SAMPLES <========< sample/a.rb >========> ~ > cat sample/a.rb require 'openobject' oo = openobject oo.foo = 42 oo.bar 'forty-two' p oo.foo p oo.bar ~ > ruby sample/a.rb 42 "forty-two" <========< sample/b.rb >========> ~ > cat sample/b.rb require 'openobject' oo = openobject :foo => 42, :bar => 'forty-two' do foobar 42.0 end p oo.to_hash p oo.attributes ~ > ruby sample/b.rb {"foobar"=>42.0, "foo"=>42, "bar"=>"forty-two"} ["foo", "bar", "foobar"] <========< sample/c.rb >========> ~ > cat sample/c.rb require 'openobject' oo = openobject :foo => 42 oo.bar = 'forty-two' oo.extend do attribute :foobar => 42.0 def barfoo [ foo, bar, foobar ] end end p oo.foobar p oo.barfoo ~ > ruby sample/c.rb 42.0 [42, "forty-two", 42.0] <========< sample/d.rb >========> ~ > cat sample/d.rb require 'openobject' config = openobject do attribute :header => openobject(:width => 42, :height => 42) attribute :body => openobject(:width => 4242, :height => 4242) attribute :footer => openobject(:width => 42.0, :height => 42.0) end p config.header.width p config.footer.height ~ > ruby sample/d.rb 42 42.0 AUTHOR ara.t.howard@gmail.com enjoy. a @ http://drawohara.com/ -- we can deny everything, except that we have the possibility of being better. simply reflect on that. h.h. the 14th dalai lama