class Ppl::Format::Contact::Full

Attributes

email_address_format[W]
phone_number_format[W]
postal_address_format[W]

Public Class Methods

new() click to toggle source
# File lib/ppl/format/contact/full.rb, line 7
def initialize
  @email_address_format = Ppl::Format::Contact::EmailAddresses.new
  @phone_number_format = Ppl::Format::Contact::PhoneNumber.new
  @postal_address_format = Ppl::Format::Contact::PostalAddresses.new
end

Public Instance Methods

process(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 13
def process(contact)
  @lines = []

  first_line = first_line(contact)
  if first_line != ""
    @lines.push(first_line)
  end

  vitals = vitals(contact)
  if vitals != ""
    @lines.push("")
    @lines.push(vitals)
  end

  format_organizations(contact)
  format_email_addresses(contact)
  format_phone_numbers(contact)
  format_postal_addresses(contact)
  format_urls(contact)

  return @lines.join("\n")
end

Private Instance Methods

choose_first_line_address(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 50
def choose_first_line_address(contact)
  preferred = contact.email_addresses.find { |e| e.preferred }
  if preferred.nil?
    contact.email_addresses.first
  else
    preferred
  end
end
first_line(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 38
def first_line(contact)
  line = ""
  if !contact.name.nil?
    line += contact.name.full
  end
  email_address = choose_first_line_address(contact)
  unless email_address.nil?
    line += " <#{email_address.address}>"
  end
  return line
end
format_email_addresses(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 75
def format_email_addresses(contact)
  unless contact.email_addresses.empty?
    @lines << ""
    @lines << "Email Addresses:"
    @lines << @email_address_format.process(contact)
  end
end
format_organizations(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 71
def format_organizations(contact)
  push_list("Organizations", contact.organizations)
end
format_phone_numbers(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 83
def format_phone_numbers(contact)
  unless contact.phone_numbers.empty?
    @lines << ""
    @lines << "Phone Numbers"
    @lines << @phone_number_format.process(contact)
  end
end
format_postal_addresses(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 91
def format_postal_addresses(contact)
  unless contact.postal_addresses.empty?
    @lines << ""
    @lines << "Postal Addresses"
    @lines << @postal_address_format.process(contact)
  end
end
format_urls(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 99
def format_urls(contact)
  push_list("URLs", contact.urls)
end
format_vital(name, value) click to toggle source
# File lib/ppl/format/contact/full.rb, line 67
def format_vital(name, value)
  return sprintf("  %-12s %s", name, value)
end
push_list(label, list, property = nil) click to toggle source
# File lib/ppl/format/contact/full.rb, line 103
def push_list(label, list, property = nil)
  return if list.empty?
  @lines.push("")
  @lines.push("#{label}:")
  if list.kind_of?(Array)
    list.each do |item|
      string = property.nil? ? item : item.send(property)
      @lines << "  #{string}"
    end
  else
    @lines.push("  #{list}")
  end
end
vitals(contact) click to toggle source
# File lib/ppl/format/contact/full.rb, line 59
def vitals(contact)
  vitals = []
  if !contact.birthday.nil?
    vitals.push(format_vital("Birthday", contact.birthday.strftime("%Y-%m-%d")))
  end
  return vitals.join("\n")
end