lib/i18n/js/utils.rb in i18n-js-3.0.0.rc9 vs lib/i18n/js/utils.rb in i18n-js-3.0.0.rc10
- old
+ new
@@ -20,14 +20,31 @@
def self.deep_merge!(target_hash, hash) # :nodoc:
target_hash.merge!(hash, &MERGER)
end
- def self.deep_reject(hash, &block)
+ def self.deep_reject(hash, scopes = [], &block)
hash.each_with_object({}) do |(k, v), memo|
- unless block.call(k, v)
- memo[k] = v.kind_of?(Hash) ? deep_reject(v, &block) : v
+ unless block.call(k, v, scopes + [k.to_s])
+ memo[k] = v.kind_of?(Hash) ? deep_reject(v, scopes + [k.to_s], &block) : v
end
+ end
+ end
+
+ def self.scopes_match?(scopes1, scopes2)
+ if scopes1.length == scopes2.length
+ [scopes1, scopes2].transpose.all? do |scope1, scope2|
+ scope1.to_s == '*' || scope2.to_s == '*' || scope1.to_s == scope2.to_s
+ end
+ end
+ end
+
+ def self.deep_key_sort(hash)
+ # Avoid things like `true` or `1` from YAML which causes error
+ hash.keys.sort {|a, b| a.to_s <=> b.to_s}.
+ each_with_object({}) do |key, seed|
+ value = hash[key]
+ seed[key] = value.is_a?(Hash) ? deep_key_sort(value) : value
end
end
end
end
end