9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/apple-news/properties.rb', line 9
def load_properties(opts)
opts = ActiveSupport::HashWithIndifferentAccess.new(opts)
self.class.properties.each do |prop, settings|
val = if !settings[:klass].nil?
assigned_val = opts.fetch(prop, settings[:default])
if settings[:default].is_a?(Array)
assigned_val.map { |v| settings[:klass].send(settings[:init_method], v) }
elsif settings[:default].is_a?(Hash)
Hash[assigned_val.map { |k, v| [k, settings[:klass].send(settings[:init_method], v)]}]
else
assigned_val.nil? ? nil : settings[:klass].send(settings[:init_method], assigned_val)
end
else
opts.fetch(prop, settings[:default])
end
instance_variable_set "@#{prop}", val
end
end
|