Sha256: 6a9d2982829e561170cbfe9813369ac232b193e9777413e4d68582e9b391fb5c
Contents?: true
Size: 1.8 KB
Versions: 3
Compression:
Stored size: 1.8 KB
Contents
# encoding: UTF-8 # Copyright 2012 Twitter, Inc # http://www.apache.org/licenses/LICENSE-2.0 module TwitterCldr module Utils autoload :CodePoints, 'twitter_cldr/utils/code_points' autoload :YAML, 'twitter_cldr/utils/yaml' class << self # adapted from: http://snippets.dzone.com/posts/show/11121 (first comment) def deep_symbolize_keys(arg) case arg when Array arg.map { |elem| deep_symbolize_keys(elem) } when Hash Hash[arg.map { |k, v| [k.is_a?(String) ? k.to_sym : k, deep_symbolize_keys(v)] }] else arg end end def deep_merge!(first, second) if first.is_a?(Hash) && second.is_a?(Hash) second.each { |key, val| first[key] = deep_merge!(first[key], val) } elsif first.is_a?(Array) && second.is_a?(Array) second.each_with_index { |elem, index| first[index] = deep_merge!(first[index], elem) } else return second end first end def deep_merge_hash(first, second, &block) target = first.dup second.keys.each do |key| if second[key].is_a?(Hash) && first[key].is_a?(Hash) target[key] = deep_merge_hash(target[key], second[key], &block) next end target[key] = block_given? ? yield(first[key], second[key]) : second[key] end target end def compute_cache_key(*pieces) if pieces && pieces.size > 0 pieces.join("|").hash else 0 end end def traverse_hash(hash, path) return if path.empty? path.inject(hash) do |current, key| current.is_a?(Hash) ? current[key] : return end end end end end require 'twitter_cldr/utils/interpolation'
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
twitter_cldr-2.0.2 | lib/twitter_cldr/utils.rb |
twitter_cldr-2.0.1 | lib/twitter_cldr/utils.rb |
twitter_cldr-2.0.0 | lib/twitter_cldr/utils.rb |