Class: ComplexConfig::Settings
- Inherits:
-
JSON::GenericObject
- Object
- JSON::GenericObject
- ComplexConfig::Settings
show all
- Includes:
- Enumerable
- Defined in:
- lib/complex_config/settings.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(id, *a, &b) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/complex_config/settings.rb', line 63
def method_missing(id, *a, &b)
case
when id =~ /\?\z/
begin
public_send $`.to_sym, *a, &b
rescue ComplexConfig::AttributeMissing
nil
end
when id =~ /=\z/
super
when value = ComplexConfig::Provider.apply_plugins(self, id)
value
else
if attribute_set?(id)
super
else
raise ComplexConfig::AttributeMissing, "no attribute named #{id.inspect}"
end
end
end
|
Class Method Details
.[](*a) ⇒ Object
5
6
7
|
# File 'lib/complex_config/settings.rb', line 5
def self.[](*a)
from_hash *a
end
|
Instance Method Details
#attribute_names ⇒ Object
18
19
20
|
# File 'lib/complex_config/settings.rb', line 18
def attribute_names
table.keys
end
|
#attribute_set?(name) ⇒ Boolean
14
15
16
|
# File 'lib/complex_config/settings.rb', line 14
def attribute_set?(name)
table.key?(name.to_sym)
end
|
#attribute_values ⇒ Object
22
23
24
|
# File 'lib/complex_config/settings.rb', line 22
def attribute_values
table.values
end
|
#deep_freeze ⇒ Object
46
47
48
49
50
51
|
# File 'lib/complex_config/settings.rb', line 46
def deep_freeze
each do |_, v|
v.ask_and_send(:deep_freeze) || (v.freeze rescue v)
end
freeze
end
|
#each(&block) ⇒ Object
9
10
11
|
# File 'lib/complex_config/settings.rb', line 9
def each(&block)
table.each(&block)
end
|
#to_h ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/complex_config/settings.rb', line 26
def to_h
each_with_object({}) do |(k, v), h|
h[k] = if Array === v
v.to_ary.map { |x| (x.ask_and_send(:to_h) rescue x) || x }
elsif v.respond_to?(:to_h)
v.ask_and_send(:to_h) rescue v
else
v
end
end
end
|
#to_s ⇒ Object
Also known as:
inspect
38
39
40
|
# File 'lib/complex_config/settings.rb', line 38
def to_s
to_h.to_yaml
end
|