Class: Postnummer::Parser
- Inherits:
-
Object
- Object
- Postnummer::Parser
- Defined in:
- lib/postnummer/parser.rb
Overview
Class that do the parsing from posten.se
Instance Method Summary collapse
-
#initialize(zip_code) ⇒ Parser
constructor
A new instance of Parser.
-
#parse ⇒ Array<Street>
Makes the web call and parses out a list of Streets.
-
#parse_street_numbers(street_numbers) ⇒ Hash
Parses the street numbers from a street_numbers string.
Constructor Details
#initialize(zip_code) ⇒ Parser
Returns a new instance of Parser.
7 8 9 |
# File 'lib/postnummer/parser.rb', line 7 def initialize(zip_code) @zip_code = zip_code end |
Instance Method Details
#parse ⇒ Array<Street>
Makes the web call and parses out a list of Streets
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/postnummer/parser.rb', line 13 def parse url = "http://www.posten.se/soktjanst/postnummersok/resultat.jspv?pnr=#{@zip_code}" agent = Mechanize.new streets = [] agent.get url do |page| rows = page.search 'table.result tr' rows.each do |tr| name = tr.search('td[1]').text street_numbers_string = tr.search('td[2]').text zip_code = tr.search('td[3]').text city = tr.search('td[4]').text street_numbers = parse_street_numbers(street_numbers_string) streets << Street.new(name, street_numbers[:first], street_numbers[:last], zip_code, city) end end streets end |
#parse_street_numbers(street_numbers) ⇒ Hash
Parses the street numbers from a street_numbers string
38 39 40 41 |
# File 'lib/postnummer/parser.rb', line 38 def parse_street_numbers(street_numbers) numbers = street_numbers.split ' - ' { first: numbers[0], last: numbers[1] } end |