class Pinpoint::Formatter

Public Class Methods

format(address, options = {}) click to toggle source

Public: Is able to process an Address into numerous formats based on the country and style, or a completely custom format.

address - An Object that responds to name, street, city, state,

#county, #country, #zip_code and #country.

options - A Hash of options describing how the address should be formatted

:country - Each country displays its addresses in a specific
           format. Pinpoint knows about these. Passing in two
           letter ISO code as a Symbol for a country will use
           that country's format. (defaults to :us)
:style   - Can be a Symbol which relates to any style in the
           format file that is loaded. Default formats are:

             * :one_line
             * :one_line_with_name
             * :multi_line
             * :multi_line_with_name
             * :html

           All but the 'html' style is standard text.

           The :html option wraps each piece of the address as
           well as the entire address in HTML tags to which CSS
           can be applied for either a single-line or multi-line
           layout.

           Additionally :html will append classes to the
           different pieces of the address which correspond to
           both the globally generic name (eg 'locality').

Example

format(address, :country => :us, :style => :one_line)
# => 'Kwik-E-Mart, 123 Apu Lane, Springfield, NW 12345, United States'

format(address, :country => :us, :style => :multi_line)
# => 'Kwik-E-Mart
#     123 Apu Lane
#     Springfield, NW 12345
#     United States'

format(address, country:  :us,
                style:    :html)

# => '<address>
#       <span class="section">
#         <span class="name">Kwik-E-Mart</span>
#       </span>
#       <span class="section">
#         <span class="street">123 Apu Lane</span>
#       </span>
#       <span class="section">
#         <span class="city locality">Springfield</span>
#         <span class="state state_or_province">NW</span>
#         <span class="zip_code postal_code">12345</span>
#       </span>
#       <span class="section">
#         <span class="country">United States</span>
#       </span>
#     </address>'
# File lib/pinpoint/formatter.rb, line 70
def self.format(address, options = {})
  country = options.fetch(:country, :us)
  style   = options.fetch(:style,   :one_line)

  format  = formats[country]

  format.output address, style: style
end

Private Class Methods

formats() click to toggle source
# File lib/pinpoint/formatter.rb, line 81
def self.formats
  @formats ||= Pinpoint::Format::List.new
end