class ConfigKit::SlashedHash
Public Class Methods
new(hash, keep_nesting=false)
click to toggle source
# File lib/config_kit/ext/slashed_hash.rb, line 4 def initialize(hash, keep_nesting=false) self.merge!(hash) if keep_nesting self.merge!(dot_flattened(hash)) SlashedHash.symbolize(self) end
symbolize(hash)
click to toggle source
# File lib/config_kit/ext/slashed_hash.rb, line 19 def self.symbolize(hash) hash.keys.each do |key| hash[key.to_sym] = hash.delete(key) end end
Public Instance Methods
inspect()
click to toggle source
# File lib/config_kit/ext/slashed_hash.rb, line 11 def inspect "#<#{self.class.name}:#{object_id} #{super}>" end
to_hash()
click to toggle source
# File lib/config_kit/ext/slashed_hash.rb, line 15 def to_hash {}.replace(self) end
Protected Instance Methods
dot_flattened(nested_hash, names=[], result={})
click to toggle source
turns {'a' => {'b' => 'c'}} into {'a.b' => 'c'}
# File lib/config_kit/ext/slashed_hash.rb, line 27 def dot_flattened(nested_hash, names=[], result={}) nested_hash.each do |key, val| next if val == nil if val.respond_to?(:has_key?) dot_flattened(val, names + [key], result) elsif val.is_a?(Array) result[(names + [key]).join('/')] = (val.map do |e| raise SlashedHashTypeError.new "Not Support #{e.class.name} in array" unless e.respond_to?(:to_s) e.to_s end).join(',') else result[(names + [key]).join('/')] = val end end result end