Class: MelissaData::WebSmart::PropertyXMLParser
- Inherits:
-
XMLParser
- Object
- XMLParser
- MelissaData::WebSmart::PropertyXMLParser
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
Instance Method Details
#build_subdictionary(xml_vals) ⇒ Object
63
64
65
66
67
|
# File 'lib/melissa_data/web_smart/xml.rb', line 63
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_fields ⇒ Object
69
70
71
72
73
|
# File 'lib/melissa_data/web_smart/xml.rb', line 69
def expected_fields
[ "Building", "CurrentDeed", "CurrentSale", "Lot", "Owner",
"OwnerAddress", "Parcel", "ParsedPropertyAddress", "PriorSale",
"PropertyAddress", "RecordID", "Result", "SquareFootage", "Values"]
end
|
#expected_fields?(fields) ⇒ Boolean
75
76
77
|
# File 'lib/melissa_data/web_smart/xml.rb', line 75
def expected_fields?(fields)
expected_fields == fields.sort
end
|
#expected_retrieved? ⇒ Boolean
87
88
89
|
# File 'lib/melissa_data/web_smart/xml.rb', line 87
def expected_retrieved?
expected_fields?(retrieved_fields)
end
|
#field_details ⇒ Object
59
60
61
|
# File 'lib/melissa_data/web_smart/xml.rb', line 59
def field_details
record_node.children.map(&:children)
end
|
#parse ⇒ Object
50
51
52
53
54
55
56
57
|
# File 'lib/melissa_data/web_smart/xml.rb', line 50
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_node ⇒ Object
79
80
81
|
# File 'lib/melissa_data/web_smart/xml.rb', line 79
def record_node
xml_document.children.first.children.last
end
|
#retrieved_fields ⇒ Object
83
84
85
|
# File 'lib/melissa_data/web_smart/xml.rb', line 83
def retrieved_fields
record_node.children.map(&:name)
end
|