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