8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/normalizr/concern.rb', line 8
def normalize(*args, &block)
options = Normalizr::OptionsParser.new(args, block)
prepend Module.new {
options.attributes.each do |method|
define_method :"#{method}=" do |value|
condition_lambda = -> condition { Proc === condition ? instance_exec(&condition) : send(condition) }
positive = options.positive_condition.all?(&condition_lambda)
negative = options.negative_condition.none?(&condition_lambda)
if positive && negative
value = Normalizr.normalize(value, *options.before)
value = Normalizr.normalize(value, *options.after) if options.after.any?
end
super(value)
end
end
}
end
|