class Temple::OptionHash
def []=(key, value)
def []=(key, value) validate_key!(key) super end
def add_deprecated_keys(*keys)
def add_deprecated_keys(*keys) keys.flatten.each { |key| @valid[key] = @deprecated[key] = true } end
def add_valid_keys(*keys)
def add_valid_keys(*keys) keys.flatten.each { |key| @valid[key] = true } end
def deprecated_key?(key)
def deprecated_key?(key) @deprecated.include?(key) || @hash.any? {|h| h.deprecated_key?(key) if h.respond_to?(:deprecated_key?) } end
def initialize(*hash, &block)
def initialize(*hash, &block) super(*hash) @handler = block @valid = {} @deprecated = {} end
def update(hash)
def update(hash) validate_hash!(hash) super end
def valid_key?(key)
def valid_key?(key) include?(key) || @valid.include?(key) || @hash.any? {|h| h.valid_key?(key) if h.respond_to?(:valid_key?) } end
def valid_keys
def valid_keys (keys + @valid.keys + @hash.map {|h| h.valid_keys if h.respond_to?(:valid_keys) }.compact.flatten).uniq end
def validate_hash!(hash)
def validate_hash!(hash) hash.to_hash.keys.each {|key| validate_key!(key) } end
def validate_key!(key)
def validate_key!(key) @handler.call(self, key, true) if deprecated_key?(key) @handler.call(self, key, false) unless valid_key?(key) end