Method: JsDuck::Accessors#create

Defined in:
lib/jsduck/accessors.rb

#create(cls) ⇒ Object

Given a class, generates accessor methods to configs with When class already contains a getter or setter, the method is not added.



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
36
37
38
# File 'lib/jsduck/accessors.rb', line 10

def create(cls)
  # Grab all configs tagged as @accessor
  accessors = cls[:members][:cfg].find_all {|cfg| cfg[:accessor] }

  # Build lookup tables of method and event names
  methods = build_lookup_table(cls[:members][:method])
  events = build_lookup_table(cls[:members][:event])

  accessors.each do |cfg|
    # add getter if no method with same name exists
    get = create_getter(cfg)
    if !methods[get[:name]]
      cls[:members][:method] << get
    end
    # add setter if no method with same name exists
    set = create_setter(cfg)
    if !methods[set[:name]]
      cls[:members][:method] << set
    end
    # for evented accessors
    if cfg[:evented]
      # add event if no event with same name exists
      ev = create_event(cfg)
      if !events[ev[:name]]
        cls[:members][:event] << ev
      end
    end
  end
end