--- !ruby/object:RI::ClassDescription 
attributes: []

class_methods: 
- !ruby/object:RI::MethodSummary 
  name: "[]"
- !ruby/object:RI::MethodSummary 
  name: new
comment: 
- !ruby/struct:SM::Flow::H 
  level: 1
  text: OpenObject
- !ruby/struct:SM::Flow::P 
  body: OpenObject is very similar to Ruby's own OpenStruct, but it offers some useful advantages. With OpenStruct slots with the same name's as predefined Object methods can not be used. With OpenObject any slot can be defined, OpendObject is also a bit faster becuase it is based on a Hash, not method signitures.
- !ruby/struct:SM::Flow::P 
  body: "Because OpenObject is a subclass of Hash, it can do just about everything a Hash can do, except that most public methods have been made protected and thus available only internally or via #send."
- !ruby/struct:SM::Flow::P 
  body: OpenObject will also clobber any method for which a slot is defined. Even generally very important methods can be clobbered, like instance_eval. So be aware of this. OpenObject should be used in well controlled scenarios.
- !ruby/struct:SM::Flow::P 
  body: "If you wish to pass an OpenObject to a routine that normal takes a Hash, but are uncertain it can handle the distictions properly you can convert easily to a Hash using #to_hash! and the result will automatically be converted back to an OpenObject on return."
- !ruby/struct:SM::Flow::VERB 
  body: "  o = OpenObject.new(:a=&gt;1,:b=&gt;2)\n  o.as_hash!{ |h| h.update(:a=&gt;6) }\n  o #=&gt; #&lt;OpenObject {:a=&gt;6,:b=&gt;2}&gt;\n"
- !ruby/struct:SM::Flow::P 
  body: "Finally, unlike a regular Hash, all OpenObject's keys are symbols and all keys are converted to such using #to_sym on the fly."
constants: 
- !ruby/object:RI::Constant 
  comment: 
  name: PUBLIC_METHODS
  value: /(^__|^instance_|^object_|^\W|^as$|^send$|^class$|\?$)/
full_name: OpenObject
includes: []

instance_methods: 
- !ruby/object:RI::MethodSummary 
  name: ==
- !ruby/object:RI::MethodSummary 
  name: "[]"
- !ruby/object:RI::MethodSummary 
  name: "[]="
- !ruby/object:RI::MethodSummary 
  name: as_hash!
- !ruby/object:RI::MethodSummary 
  name: default!
- !ruby/object:RI::MethodSummary 
  name: define_slot
- !ruby/object:RI::MethodSummary 
  name: delete
- !ruby/object:RI::MethodSummary 
  name: each
- !ruby/object:RI::MethodSummary 
  name: fetch
- !ruby/object:RI::MethodSummary 
  name: initialize_copy
- !ruby/object:RI::MethodSummary 
  name: inspect
- !ruby/object:RI::MethodSummary 
  name: merge
- !ruby/object:RI::MethodSummary 
  name: method_missing
- !ruby/object:RI::MethodSummary 
  name: protect_slot
- !ruby/object:RI::MethodSummary 
  name: store
- !ruby/object:RI::MethodSummary 
  name: to_a
- !ruby/object:RI::MethodSummary 
  name: to_h
- !ruby/object:RI::MethodSummary 
  name: to_hash
- !ruby/object:RI::MethodSummary 
  name: to_openobject
- !ruby/object:RI::MethodSummary 
  name: to_proc
- !ruby/object:RI::MethodSummary 
  name: update
name: OpenObject
superclass: Hash
