class Temple::OptionMap

Public Class Methods

new(*map, &block) click to toggle source
Calls superclass method Temple::MutableMap::new
# File lib/temple/map.rb, line 57
def initialize(*map, &block)
  super(*map)
  @handler = block
  @valid = {}
  @deprecated = {}
end

Public Instance Methods

[]=(key, value) click to toggle source
Calls superclass method Temple::MutableMap#[]=
# File lib/temple/map.rb, line 64
def []=(key, value)
  validate_key!(key)
  super
end
add_deprecated_keys(*keys) click to toggle source
# File lib/temple/map.rb, line 83
def add_deprecated_keys(*keys)
  keys.flatten.each { |key| @valid[key] = @deprecated[key] = true }
end
add_valid_keys(*keys) click to toggle source
# File lib/temple/map.rb, line 79
def add_valid_keys(*keys)
  keys.flatten.each { |key| @valid[key] = true }
end
deprecated_key?(key) click to toggle source
# File lib/temple/map.rb, line 96
def deprecated_key?(key)
  @deprecated.include?(key) ||
    @map.any? {|h| h.deprecated_key?(key) if h.respond_to?(:deprecated_key?) }
end
update(map) click to toggle source
Calls superclass method Temple::MutableMap#update
# File lib/temple/map.rb, line 69
def update(map)
  validate_map!(map)
  super
end
valid_key?(key) click to toggle source
# File lib/temple/map.rb, line 101
def valid_key?(key)
  include?(key) || @valid.include?(key) ||
    @map.any? {|h| h.valid_key?(key) if h.respond_to?(:valid_key?) }
end
valid_keys() click to toggle source
# File lib/temple/map.rb, line 74
def valid_keys
  (keys + @valid.keys +
   @map.map {|h| h.valid_keys if h.respond_to?(:valid_keys) }.compact.flatten).uniq
end
validate_key!(key) click to toggle source
# File lib/temple/map.rb, line 91
def validate_key!(key)
  @handler.call(self, key, :deprecated) if deprecated_key?(key)
  @handler.call(self, key, :invalid) unless valid_key?(key)
end
validate_map!(map) click to toggle source
# File lib/temple/map.rb, line 87
def validate_map!(map)
  map.to_hash.keys.each {|key| validate_key!(key) }
end