Method: Filemaker::Record#initialize

Defined in:
lib/filemaker/record.rb

#initialize(record, resultset, portal_table_name = nil) ⇒ Record

Returns a new instance of Record.



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
39
40
41
42
43
44
# File 'lib/filemaker/record.rb', line 14

def initialize(record, resultset, portal_table_name = nil)
  @mod_id    = record['mod-id']
  @record_id = record['record-id']
  @portals   = HashWithIndifferentAndCaseInsensitiveAccess.new
  @dirty     = {} # Keep track of field modification
  @ready     = false

  record.xpath('field').each do |field|
    # `field` is Nokogiri::XML::Element
    field_name = field['name']
    # Right now, I do not want to mess with the field name
    # field_name.gsub!(Regexp.new(portal_table_name + '::'), '') if portal_table_name
    datum = []

     = if portal_table_name
                        resultset.portal_fields[portal_table_name]
                      else
                        resultset.fields
                      end

    field.xpath('data').each do |data|
      datum.push([field_name].raw_cast(data.inner_text))
    end

    self[field_name] = normalize_data(datum)
  end

  build_portals(record.xpath('relatedset'), resultset)

  @ready = true
end