class Correios::CEP::Parser
Constants
- ADDRESS_MAP
Public Instance Methods
address(xml)
click to toggle source
# File lib/correios/cep/parser.rb, line 17 def address(xml) doc = Ox.parse(xml) return_node = find_node(doc.nodes, 'return') return {} if return_node.nil? address = return_node.nodes.reduce({}) do |address_accumulator, element| key = ADDRESS_MAP[element.name] address_accumulator[key] = text_for(element) if key address_accumulator end join_complements(address) address end
Private Instance Methods
find_node(nodes, name)
click to toggle source
# File lib/correios/cep/parser.rb, line 36 def find_node(nodes, name) node = nodes.last return nil unless node.is_a?(Ox::Element) return node if node.nil? || node.name == name find_node(node.nodes, name) end
join_complements(address)
click to toggle source
# File lib/correios/cep/parser.rb, line 48 def join_complements(address) address[:complement] = "" if address[:complement].nil? address[:complement] += " #{address.delete(:complement2)}" address[:complement].strip! end
text_for(element)
click to toggle source
# File lib/correios/cep/parser.rb, line 44 def text_for(element) element.text.nil? ? "" : element.text.force_encoding(Encoding::UTF_8) end