Method: Eapi::Methods::Accessor#define_multiple_accessor

Defined in:
lib/eapi/methods/accessor.rb

#define_multiple_accessor(field) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/eapi/methods/accessor.rb', line 5

def define_multiple_accessor(field)
  init          = Eapi::Methods::Names.init field
  fluent_adder  = Eapi::Methods::Names.add field
  fluent_setter = Eapi::Methods::Names.fluent_setter field
  getter        = Eapi::Methods::Names.getter field

  define_method fluent_adder do |value|
    current = send(getter) || send(init)
    if current.respond_to? :add
      current.add value
    else
      current << value
    end

    send(fluent_setter, current)
  end
end