Class: MelissaData::WebSmart::PropertyXMLParser

Inherits:
XMLParser
  • Object
show all
Defined in:
lib/melissa_data/web_smart/xml.rb

Instance Attribute Summary

Attributes inherited from XMLParser

#xml_document

Instance Method Summary collapse

Methods inherited from XMLParser

#children?, #initialize, #viperize, #viperize_hash

Constructor Details

This class inherits a constructor from MelissaData::WebSmart::XMLParser

Instance Method Details

#build_subdictionary(xml_vals) ⇒ Object



43
44
45
46
47
# File 'lib/melissa_data/web_smart/xml.rb', line 43

def build_subdictionary(xml_vals)
  keys = xml_vals.map(&:name)
  vals = xml_vals.map { |v| v.children.first.text unless children? v }
  viperize_hash(keys.zip(vals).to_h)
end

#expected_fieldsObject



49
50
51
52
53
# File 'lib/melissa_data/web_smart/xml.rb', line 49

def expected_fields
  [ "Building", "CurrentDeed", "CurrentSale", "Lot", "Owner",
    "OwnerAddress", "Parcel", "ParsedPropertyAddress", "PriorSale",
    "PropertyAddress", "RecordID", "Result", "SquareFootage", "Values"]
end

#expected_fields?(fields) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/melissa_data/web_smart/xml.rb', line 55

def expected_fields?(fields)
  expected_fields == fields.sort
end

#expected_retrieved?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/melissa_data/web_smart/xml.rb', line 67

def expected_retrieved?
  expected_fields?(retrieved_fields)
end

#field_detailsObject



39
40
41
# File 'lib/melissa_data/web_smart/xml.rb', line 39

def field_details
  record_node.children.map(&:children)
end

#parseObject



30
31
32
33
34
35
36
37
# File 'lib/melissa_data/web_smart/xml.rb', line 30

def parse
  parsed_hash = {}
  if expected_retrieved?
    retrieved_fields.each_with_index { |f, i| parsed_hash[f] = { data: field_details[i] } }
    parsed_hash.keys.each { |k| parsed_hash[k] = build_subdictionary(parsed_hash[k][:data]) }
    viperize_hash(parsed_hash)
  end
end

#record_nodeObject



59
60
61
# File 'lib/melissa_data/web_smart/xml.rb', line 59

def record_node
  xml_document.children.first.children.last # its just how they structure it..
end

#retrieved_fieldsObject



63
64
65
# File 'lib/melissa_data/web_smart/xml.rb', line 63

def retrieved_fields
  record_node.children.map(&:name)
end