Class: Traduki::HashTool
- Inherits:
-
Object
show all
- Defined in:
- lib/traduki/hash_tool.rb
Defined Under Namespace
Classes: HashToolError, InvalidDotkey
Class Method Summary
collapse
Class Method Details
._safe_set(temp, key, value) ⇒ Object
32
33
34
35
36
37
38
|
# File 'lib/traduki/hash_tool.rb', line 32
def self._safe_set(temp, key, value)
if temp[key].is_a? Hash
temp[key]['_'] = value unless temp[key]['_']
else
temp[key] = value unless temp[key]
end
end
|
.clean(dict, contrast) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/traduki/hash_tool.rb', line 58
def self.clean(dict, contrast)
result = contrast.clone
result.each do |key, _|
if result[key].is_a?(Hash) && dict[key].is_a?(Hash)
result[key] = clean(dict[key], result[key])
elsif result[key].is_a?(String) && dict[key].is_a?(String)
result[key] = dict[key]
elsif result[key].is_a?(String) && dict[key].is_a?(Hash)
result[key] = dict['_'] unless dict['_'].nil?
elsif result[key].is_a?(Hash) && dict[key].is_a?(String)
result[key]['_'] = dict[key]
end
end
result
end
|
.contrastiat(dotkeys) ⇒ Object
52
53
54
55
56
|
# File 'lib/traduki/hash_tool.rb', line 52
def self.contrastiat(dotkeys)
contrast = {}
dotkeys.split('.').each { |key| set_value contrast, key, key }
contrast
end
|
.get_value(dict, dotkey) ⇒ Object
9
10
11
12
13
14
15
16
17
|
# File 'lib/traduki/hash_tool.rb', line 9
def self.get_value(dict, dotkey)
validate_dotkey dotkey
temp = dict
dotkey.split('.').each do |key|
temp = temp[key]
end
return temp['_'] if temp.is_a?(Hash) && !temp['_'].nil?
temp
end
|
.key?(dict, dotkey) ⇒ Boolean
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/traduki/hash_tool.rb', line 40
def self.key?(dict, dotkey)
validate_dotkey dotkey
flag = true
temp = dict
dotkey.split('.').each do |key|
flag = temp.key? key
break unless flag
temp = temp[key]
end
flag
end
|
.safe_set(dict, dotkey) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/traduki/hash_tool.rb', line 19
def self.safe_set(dict, dotkey)
validate_dotkey dotkey
temp = dict
keys = dotkey.split('.')
keys.each_with_index do |key, index|
next if index == keys.count - 1
temp[key] = {} if temp[key].nil?
temp[key] = { '_' => temp[key] } if temp[key].is_a? String
temp = temp[key]
end
_safe_set temp, keys.last, dotkey
end
|
.validate_dotkey(dotkey) ⇒ Object
5
6
7
|
# File 'lib/traduki/hash_tool.rb', line 5
def self.validate_dotkey(dotkey)
raise InvalidDotkey, dotkey unless /^[a-zA-Z0-9.-]+$/ =~ dotkey
end
|