7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/setsy/dsl.rb', line 7
def setsy(attribute_name, options = {})
readers = {}
options[:column] ||= "#{attribute_name}_data".to_sym
options[:defaults] ||= self.const_defined?(:SETSY_DEFAULTS) ? self.const_get(:SETSY_DEFAULTS) : {}
readers = yield(Setsy::Configuration) if block_given?
class_eval do
define_method(:setsy_configuration) do
options[:defaults] || {}
end
define_singleton_method(:setsy_default) do
options[:defaults] || {}
end
end
instance_eval do
define_method(:setsy_configuration) do
if send(options[:column]).try(:empty?)
self.class.setsy_default
else
send(options[:column])
end
end
define_method(:setsy_default) do
self.class.setsy_default
end
define_method(attribute_name) do
Setsy::Configuration.from_set(self, setsy_configuration, readers)
end
end
end
|