Module: TwitterCldr::Utils
- Included in:
- Shared::PropertiesDatabase
- Defined in:
- lib/twitter_cldr/utils.rb,
lib/twitter_cldr/utils/trie.rb,
lib/twitter_cldr/utils/yaml.rb,
lib/twitter_cldr/utils/range_set.rb,
lib/twitter_cldr/utils/regexp_ast.rb,
lib/twitter_cldr/utils/code_points.rb,
lib/twitter_cldr/utils/regexp_sampler.rb,
lib/twitter_cldr/utils/script_detector.rb,
lib/twitter_cldr/utils/file_system_trie.rb
Defined Under Namespace
Modules: CodePoints, RegexpAst
Classes: FileSystemTrie, RangeSet, RegexpSampler, ScriptDetectionResult, ScriptDetector, Trie, YAML
Class Method Summary
collapse
Class Method Details
.compute_cache_key(*pieces) ⇒ Object
59
60
61
62
63
64
65
|
# File 'lib/twitter_cldr/utils.rb', line 59
def compute_cache_key(*pieces)
if pieces && pieces.size > 0
pieces.join("|").hash
else
0
end
end
|
.deep_merge!(first, second) ⇒ Object
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/twitter_cldr/utils.rb', line 33
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
|
.deep_merge_hash(first, second, &block) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/twitter_cldr/utils.rb', line 44
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
|
.deep_symbolize_keys(arg) ⇒ Object
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/twitter_cldr/utils.rb', line 22
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
|
.traverse_hash(hash, path, &block) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/twitter_cldr/utils.rb', line 67
def traverse_hash(hash, path, &block)
return if path.empty?
path.inject(hash) do |current, key|
return unless current.is_a?(Hash)
if block
yield key, current[key]
else
current[key]
end
end
end
|