class Ppl::Command::Email

Attributes

custom_format[W]
email_service[W]
list_format[W]
show_format[W]

Public Instance Methods

execute(input, output) click to toggle source
# File lib/ppl/command/email.rb, line 27
def execute(input, output)
  action = determine_action(input)
  send(action, input, output)
  true
end
options(parser, options) click to toggle source
# File lib/ppl/command/email.rb, line 11
def options(parser, options)
  parser.banner = "usage: ppl email <contact> [<email-address>]"
  parser.on("-d", "--delete", "delete email address") do
    options[:delete] = true
  end
  parser.on("-p", "--preferred", "mark address as preferred") do
    options[:preferred] = true
  end
  parser.on("-P", "--not-preferred", "mark address as not preferred") do
    options[:preferred] = false
  end
  parser.on("--format <format>", "specify a custom output format") do |f|
    options[:format] = f
  end
end

Private Instance Methods

determine_action(input) click to toggle source
# File lib/ppl/command/email.rb, line 35
def determine_action(input)
  if input.arguments.length < 1
    :list_address_book_email_addresses
  elsif input.arguments.length < 2
    :show_contact_email_addresses
  elsif input.options[:delete]
    :remove_email_address_from_contact
  else
    :update_contact_email_addresses
  end
end
format_contact(contact, options) click to toggle source
# File lib/ppl/command/email.rb, line 75
def format_contact(contact, options)
  if options[:format].nil?
    @show_format.process(contact)
  else
    @custom_format.format = options[:format]
    contact.email_addresses.map { |e| @custom_format.process(e) }.join("\n")
  end
end
list_address_book_email_addresses(input, output) click to toggle source
# File lib/ppl/command/email.rb, line 47
def list_address_book_email_addresses(input, output)
  address_book = @storage.load_address_book
  output.line(@list_format.process(address_book))
end
new_email_address?(contact, email_address) click to toggle source
# File lib/ppl/command/email.rb, line 71
def new_email_address?(contact, email_address)
  (contact.email_addresses.select { |ea| ea.address == email_address }).empty?
end
remove_email_address_from_contact(input, output) click to toggle source
# File lib/ppl/command/email.rb, line 57
def remove_email_address_from_contact(input, output)
  contact = @storage.require_contact(input.arguments[0])
  @email_service.remove(contact, input.arguments[1])
end
show_contact_email_addresses(input, output) click to toggle source
# File lib/ppl/command/email.rb, line 52
def show_contact_email_addresses(input, output)
  contact = @storage.require_contact(input.arguments[0])
  output.line(format_contact(contact, input.options))
end
update_contact_email_addresses(input, output) click to toggle source
# File lib/ppl/command/email.rb, line 62
def update_contact_email_addresses(input, output)
  contact = @storage.require_contact(input.arguments[0])
  if new_email_address?(contact, input.arguments[1])
    @email_service.add(contact, input.arguments[1], input.options)
  else
    @email_service.update(contact, input.arguments[1], input.options)
  end
end