Class: Lookbook::Store
- Inherits:
-
ActiveSupport::OrderedOptions
- Object
- ActiveSupport::OrderedOptions
- Lookbook::Store
show all
- Defined in:
- lib/lookbook/store.rb
Instance Method Summary
collapse
Constructor Details
#initialize(data = {}, deep = false) ⇒ Store
Returns a new instance of Store.
3
4
5
6
7
|
# File 'lib/lookbook/store.rb', line 3
def initialize(data = {}, deep = false)
super()
@deep = deep
set(data) if data.present?
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object
32
33
34
|
# File 'lib/lookbook/store.rb', line 32
def method_missing(name, *args)
super(normalize_key(name), *args.map { |arg| normalize_value(arg) })
end
|
Instance Method Details
#[](key) ⇒ Object
9
10
11
|
# File 'lib/lookbook/store.rb', line 9
def [](key)
super(normalize_key(key))
end
|
#[]=(key, value) ⇒ Object
13
14
15
|
# File 'lib/lookbook/store.rb', line 13
def []=(key, value)
super(normalize_key(key), normalize_value(value))
end
|
#get(key, fallback = nil) ⇒ Object
24
25
26
27
28
29
30
|
# File 'lib/lookbook/store.rb', line 24
def get(key, fallback = nil)
if key?(normalize_key(key))
self[normalize_key(key)]
else
fallback
end
end
|
#normalize_key(key) ⇒ Object
40
41
42
|
# File 'lib/lookbook/store.rb', line 40
def normalize_key(key)
key.to_s.downcase.tr("-", "_").to_sym
end
|
#normalize_value(value) ⇒ Object
44
45
46
|
# File 'lib/lookbook/store.rb', line 44
def normalize_value(value)
@deep && !value.is_a?(Store) && value.is_a?(Hash) ? Store.new(value, @deep) : value
end
|
#respond_to_missing?(name) ⇒ Boolean
36
37
38
|
# File 'lib/lookbook/store.rb', line 36
def respond_to_missing?(name, *)
key?(name)
end
|
#set(data) ⇒ Object
17
18
19
20
21
22
|
# File 'lib/lookbook/store.rb', line 17
def set(data)
data.keys.each do |key|
self[normalize_key(key)] = normalize_value(data[key])
end
self
end
|