Sha256: 519eddd37ad5e4af861f1334614ecc9346ecc88558c45ac58db33c5283207ce0

Contents?: true

Size: 982 Bytes

Versions: 7

Compression:

Stored size: 982 Bytes

Contents

module PicturehouseUk
  # @api private
  module Internal
    # Parses a chunk of HTML to derive address
    class AddressParser
      # @param [String] node the HTML to parse into an address
      # @return [PicturehouseUk::Internal::AddressParser]
      def initialize(html)
        @html = html
      end

      # @return [Hash] contains :street_address, :extended_address, :locality,
      # :postal_code, :country
      # @note Uses the address naming from http://microformats.org/wiki/adr
      def address
        {
          street_address: array[1],
          extended_address: array.length > 5 ? array[2] : nil,
          locality: town,
          region: array[-2] == town ? nil : array[-2],
          postal_code: array[-1],
          country: 'United Kingdom'
        }
      end

      private

      def town
        @town ||= array[0].split(', ')[-1]
      end

      def array
        @array ||= @html.gsub(/\<.?p.?\>/, '').split('<br>')
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
picturehouse_uk-3.0.6 lib/picturehouse_uk/internal/parser/address.rb
picturehouse_uk-3.0.5 lib/picturehouse_uk/internal/parser/address.rb
picturehouse_uk-3.0.4 lib/picturehouse_uk/internal/parser/address.rb
picturehouse_uk-3.0.3 lib/picturehouse_uk/internal/parser/address.rb
picturehouse_uk-3.0.2 lib/picturehouse_uk/internal/parser/address.rb
picturehouse_uk-3.0.1 lib/picturehouse_uk/internal/parser/address.rb
picturehouse_uk-3.0.0 lib/picturehouse_uk/internal/parser/address.rb