Class: CleanHash::Indifferent
- Inherits:
-
Object
- Object
- CleanHash::Indifferent
show all
- Defined in:
- lib/clean-hash/types/indifferent_type.rb
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Indifferent.
3
4
5
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 3
def initialize data
@data = data
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 62
def method_missing name, *args, &block
m = name.to_s
if m.end_with?('=')
m = m.sub('=', '')
self[m] = args.first
elsif m.end_with?('?')
begin
!self[m.sub('?', '')].nil?
rescue NoMethodError
false
end
elsif block
self[m] = block
else
self[m]
end
end
|
Instance Method Details
#[](key) ⇒ Object
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 45
def [] key
data = @data[key.to_sym]
data = @data[key.to_s] if data.nil?
if data.is_a?(Hash)
self.class.new data
else
data
end
end
|
#[]=(key, value) ⇒ Object
56
57
58
59
60
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 56
def []= key, value
key = key.to_sym unless key.class == Symbol
@data.delete(key.to_s)
@data[key] = value
end
|
#delete(key) ⇒ Object
29
30
31
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 29
def delete key
@data.delete(key.to_sym) || @data.delete(key.to_s)
end
|
#each(&block) ⇒ Object
33
34
35
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 33
def each &block
@data.each(&block)
end
|
#key?(name) ⇒ Boolean
17
18
19
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 17
def key? name
@data.key?(name.to_sym) || @data.key?(name.to_s)
end
|
#keys ⇒ Object
21
22
23
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 21
def keys
@data.keys
end
|
#to_ary ⇒ Object
13
14
15
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 13
def to_ary
[@data]
end
|
#to_h ⇒ Object
37
38
39
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 37
def to_h
@data
end
|
#to_json(*args) ⇒ Object
8
9
10
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 8
def to_json
JSON.pretty_generate @data
end
|
#values ⇒ Object
25
26
27
|
# File 'lib/clean-hash/types/indifferent_type.rb', line 25
def values
@data.values
end
|