class Compendium::OpenHash
Public Class Methods
[](hash = {})
click to toggle source
# File lib/compendium/open_hash.rb, line 6 def [](hash = {}) new(hash) end
Public Instance Methods
dup()
click to toggle source
# File lib/compendium/open_hash.rb, line 11 def dup self.class.new(self) end
Protected Instance Methods
convert_value(value)
click to toggle source
# File lib/compendium/open_hash.rb, line 17 def convert_value(value) if value.is_a? Hash Params[value].tap do |oh| oh.each do |k, v| oh[k] = convert_value(v) if v.is_a? Hash end end elsif value.is_a?(Array) value.dup.replace(value.map { |e| convert_value(e) }) else value end end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/compendium/open_hash.rb, line 31 def method_missing(name, *args, &block) method = name.to_s case method when %r{.=$} super unless args.length == 1 return self[method[0...-1]] = args.first when %r{.\?$} super unless args.empty? return self.key?(method[0...-1].to_sym) when %r{^_.} super unless args.empty? return self[method[1..-1]] if self.key?(method[1..-1].to_sym) else return self[method] if key?(method) || !respond_to?(method) end super end
respond_to_missing?(name, include_private = false)
click to toggle source
Calls superclass method
# File lib/compendium/open_hash.rb, line 54 def respond_to_missing?(name, include_private = false) method = name.to_s case method when %r{.[=?]$} return true if self.key?(method[0...-1]) when %r{^_.} return true if self.key?(method[1..-1]) end super end