class ParsableHash::HashStrategy
Attributes
hash[R]
origin_hash[RW]
Public Class Methods
new(strategy, origin_hash = nil)
click to toggle source
# File lib/parsable_hash/hash_strategy.rb, line 8 def initialize(strategy, origin_hash = nil) @hash = prepare(strategy) self.origin_hash = origin_hash clean_for_hash!(origin_hash) unless origin_hash.nil? end
Public Instance Methods
clean_for_hash!(value_hash)
click to toggle source
# File lib/parsable_hash/hash_strategy.rb, line 19 def clean_for_hash!(value_hash) @hash = clean_pairs(@hash, value_hash) end
each() { |strategy| ... }
click to toggle source
# File lib/parsable_hash/hash_strategy.rb, line 15 def each(&block) hash.each { |strategy| yield strategy } end
Private Instance Methods
clean_pairs(strategy_hash, value_hash)
click to toggle source
# File lib/parsable_hash/hash_strategy.rb, line 37 def clean_pairs(strategy_hash, value_hash) strategy_hash.each_pair do |key, val| if value_hash[key].is_a?(Hash) if val.is_a?(Hash) clean_pairs(strategy_hash[key], value_hash[key]) else strategy_hash.delete(key) end else strategy_hash.delete(key) unless value_hash.has_key?(key) end end end
prepare(hash)
click to toggle source
# File lib/parsable_hash/hash_strategy.rb, line 25 def prepare(hash) hash.inject({}) do |h, (k, v)| h[k] = if v.is_a? Hash prepare(v) else Strategy::ConverterLoader.from_value(v) end h end end