class PurpleHash
Public Class Methods
new(hash={})
click to toggle source
# File lib/purple_hash.rb, line 8 def initialize(hash={}) configure_from_hash(hash) @__frozen = false end
Public Instance Methods
[](key)
click to toggle source
Calls superclass method
# File lib/purple_hash.rb, line 34 def [](key) super(key.to_sym) end
[]=(key, value)
click to toggle source
Calls superclass method
# File lib/purple_hash.rb, line 38 def []=(key, value) raise HashFrozen if frozen? if value.is_a?(Hash) && !value.is_a?(self.class) self[key].configure_from_hash(value) else super(key.to_sym, value) end end
configure_from_hash(hash)
click to toggle source
# File lib/purple_hash.rb, line 24 def configure_from_hash(hash) hash.each do |key, value| if value.is_a?(Hash) self[key].configure_from_hash(value) else self[key] = value end end end
default(key)
click to toggle source
# File lib/purple_hash.rb, line 48 def default(key) return nil if frozen? self[key] = PurpleHash.new end
default=(*args)
click to toggle source
# File lib/purple_hash.rb, line 53 def default=(*args) raise RuntimeError, "#{self.class} does not allow changing the default hash value" end
freeze!()
click to toggle source
# File lib/purple_hash.rb, line 13 def freeze! self.each do |k, h| h.freeze! if h.respond_to?(:freeze!) end @__frozen = true end
frozen?()
click to toggle source
# File lib/purple_hash.rb, line 20 def frozen? @__frozen === true end