class PicturehouseUk::Internal::Parser::Address
Parses a chunk of HTML to derive address
Public Class Methods
new(html)
click to toggle source
@param [String] node the HTML to parse into an address @return [PicturehouseUk::Internal::AddressParser]
# File lib/picturehouse_uk/internal/parser/address.rb, line 9 def initialize(html) @html = html.to_s end
Public Instance Methods
address()
click to toggle source
@return [Hash] contains :street_address, :extended_address, :locality, :postal_code, :country @note Uses the address naming from microformats.org/wiki/adr
# File lib/picturehouse_uk/internal/parser/address.rb, line 16 def address { street_address: array[1], extended_address: extended_address, locality: town, region: region, postal_code: postal_code, country_name: 'United Kingdom'.freeze } end
Private Instance Methods
array()
click to toggle source
# File lib/picturehouse_uk/internal/parser/address.rb, line 29 def array @array ||= Array(@html.gsub(/\<.?p.?\>/, '').split('<br>')) end
extended_address()
click to toggle source
# File lib/picturehouse_uk/internal/parser/address.rb, line 33 def extended_address array.length > 5 ? array[2] : nil end
postal_code()
click to toggle source
# File lib/picturehouse_uk/internal/parser/address.rb, line 37 def postal_code array[-1] end
region()
click to toggle source
# File lib/picturehouse_uk/internal/parser/address.rb, line 41 def region array[-2] == town ? nil : array[-2] end
town()
click to toggle source
# File lib/picturehouse_uk/internal/parser/address.rb, line 45 def town @town ||= array[0].to_s.split(', ')[-1] end