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 'fattr' gem alongside a slightly enhanced blankslate type object. INSTALL gem install openobject URIS http://codeforpeople.com/lib/ruby/ http://rubyforge.org/projects/codeforpeople/ HISTORY 1.0.0 github import 0.0.3 added support for default values 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.fattrs ~ > 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 fattr :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 = oo{ header oo(:width => 42, :height => 42) footer oo{ width 42.0; height 42.0 } } p config.header.width p config.footer.height ~ > ruby sample/d.rb 42 42.0 <========< sample/e.rb >========> ~ > cat sample/e.rb require 'openobject' css = oo css.class = 'subtle' css.style = 'display:none' ~ > ruby sample/e.rb <========< sample/f.rb >========> ~ > cat sample/f.rb require 'openobject' # by default you cannot retrive unset values # o = oo begin; o.foo; rescue NameError; p NameError; end #=> NameError # but you can set anything # o = oo o.foo = 42 p o.foo #=> 42 # blocks can extend openobjects # o = oo{ def bar() 42 end } p o.bar #=> 42 # you can set a default value which will be returned for anything # missing value # o = oo{ default 42 } p o.bar #=> 42 # and the default value itself can be someting block/proc-like # n = 40 o = oo{ default{ n += 2 } } p o.foo #=> 42 ~ > ruby sample/f.rb NameError 42 42 42 42 AUTHOR ara.t.howard@gmail.com
Project
openobject
description: openobject kicks the ass
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
Pull Requests
Development
Dependencies
Runtime
>= 0
Project Readme