Class: Hash
- Inherits:
-
Object
show all
- Defined in:
- lib/netzke/core/ruby_ext/hash.rb
Instance Method Summary
collapse
Instance Method Details
#netzke_deep_map(&block) ⇒ Object
2
3
4
5
6
7
8
|
# File 'lib/netzke/core/ruby_ext/hash.rb', line 2
def netzke_deep_map(&block)
self.dup.tap do |h|
h.each_pair do |k,v|
h[k] = v.netzke_deep_map(&block) if v.respond_to?('netzke_deep_map')
end
end
end
|
#netzke_deep_replace(&block) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/netzke/core/ruby_ext/hash.rb', line 10
def netzke_deep_replace(&block)
self.dup.tap do |h|
h.each_pair do |k,v|
if v.is_a?(Hash)
res = yield(v)
if res == v h[k] = v.netzke_deep_replace(&block) if v.respond_to?('netzke_deep_replace')
else
h[k] = res
end
else
if v.is_a?(Array)
h[k] = v.netzke_deep_replace(&block)
end
end
end
end
end
|
#netzke_jsonify ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/netzke/core/ruby_ext/hash.rb', line 29
def netzke_jsonify
self.inject({}) do |h,(k,v)|
new_key = if k.is_a?(Netzke::Core::JsonLiteral)
k
elsif k.is_a?(String)
k.camelize(:lower)
elsif k.is_a?(Symbol)
k.to_s.camelize(:lower).to_sym
else
k
end
new_value = case v
when Array, Hash
v.netzke_jsonify
when Class, Proc
v.to_s
else
v
end
h.merge(new_key => new_value)
end
end
|
#netzke_literalize_keys ⇒ Object
64
65
66
67
|
# File 'lib/netzke/core/ruby_ext/hash.rb', line 64
def netzke_literalize_keys
netzke_update_keys{ |k| Netzke::Core::JsonLiteral.new(k.to_s) }
self
end
|
#netzke_update_keys ⇒ Object
55
56
57
58
59
60
61
62
|
# File 'lib/netzke/core/ruby_ext/hash.rb', line 55
def netzke_update_keys if block_given?
keys.each { |old_key| store(yield(old_key), delete(old_key)) }
else
to_enum(:netzke_update_keys)
end
self
end
|