Class: FCC::Station::RecordGroup

Inherits:
Object
  • Object
show all
Defined in:
lib/fcc/station/record_group.rb

Instance Method Summary collapse

Constructor Details

#initialize(results = []) ⇒ RecordGroup

Returns a new instance of RecordGroup.



6
7
8
9
10
# File 'lib/fcc/station/record_group.rb', line 6

def initialize(results = [])
  @results = results.map do |result| 
    result.is_a?(RecordDelegate) ? result : RecordDelegate.new(result)
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/fcc/station/record_group.rb', line 37

def method_missing(m, *args, &block)
  result = result_attribute(m.to_sym)

  if result.is_a?(Array) && result.size == 1 
    result = result.first
  end

  result
end

Instance Method Details

#result_attribute(attr) ⇒ Object



33
34
35
# File 'lib/fcc/station/record_group.rb', line 33

def result_attribute(attr)
  @results.collect { |r| r.send(attr.to_sym) }.compact.first
end

#to_jsonObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fcc/station/record_group.rb', line 12

def to_json
  return {}.tap do |record|
    [Station::Result::EXTENDED_ATTRIBUTES | Station::Result::BASIC_ATTRIBUTES].flatten.each do |attr|
      record[attr.to_sym] = result_attribute(attr.to_sym)
    end

    %i[contact owner community].each do |attr|
      result = result_attribute(attr.to_sym)
      next unless result

      record[attr] ||= if result.is_a?(Struct)
                         result.to_h.compact
                       elsif result.is_a?(Array) && result.compact.size > 0
                         result
                       elsif result.present?
                         result.to_s
                       end
    end
  end
end