23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/eapi/methods/accessor.rb', line 23
def define_multiple_clearer(field)
init = Eapi::Methods::Names.init field
fluent_clearer = Eapi::Methods::Names.clearer field
getter = Eapi::Methods::Names.getter field
define_method fluent_clearer do
current = send(getter)
if current.nil?
elsif current.respond_to?(:clear)
current.clear
elsif respond_to?(init)
send(init)
else
raise Eapi::Errors::CannotClearFieldError, "#{self} can't clear #{field}: it does not respond to `clear` nor we have defined a `init_#{field}` method"
end
self
end
end
|