OmniStruct - Build Status

Helpers for using OpenStruct and/or Struct over Hash

Usage

Require after or in place of classy_struct, ostruct and/or struct.

# good
require 'omnistruct`

# also good
require 'ostruct`
require 'omnistruct`

# bad
require 'omnistruct`
require 'ostruct`

TODO: document the following better

Add's the following methods to Hash;

# Hash
##

# class methods
Hash.struct_type
Hash.struct_type=

# instance methods
Hash.new.to_struct(type=Hash.struct_type)

Add's the following common Hash methods to struct types;

# All: ClassyStruct / OpenStruct / Struct
##

struct = <struct type>.to_struct( [type] )
merged = <struct type>.merge( Hash.new | <struct type> )
json   = <struct type>.to_json
value  = <struct type>.delete(:key)

# ClassyStruct
locked = <classy struct>.lock
locked.class
# => "Struct"

# OpenStruct
OpenStruct.new.merge!( Hash.new | <struct type> )

locked = OpenStruct.new.lock
locked.class
# => "Struct"

# Struct
unlocked = <Struct>.unlock( [type] )

Development

bundle install --path .bundle
bundle exec ruby ./test.rb