class Ppl::Command::Bday

Attributes

list_format[W]
show_format[W]

Public Instance Methods

execute(input, output) click to toggle source
# File lib/ppl/command/bday.rb, line 13
def execute(input, output)
  action = determine_action(input)
  send(action, input, output)
end
options(parser, options) click to toggle source
# File lib/ppl/command/bday.rb, line 9
def options(parser, options)
  parser.banner = "usage: ppl birthday <contact> [<date>]"
end

Private Instance Methods

determine_action(input) click to toggle source
# File lib/ppl/command/bday.rb, line 21
def determine_action(input)
  if input.arguments[0].nil?
    :list_birthdays
  elsif input.arguments[1].nil?
    :show_birthday
  else
    :set_birthday
  end
end
list_birthdays(input, output) click to toggle source
# File lib/ppl/command/bday.rb, line 31
def list_birthdays(input, output)
  address_book  = @storage.load_address_book
  birthday_list = @list_format.process(address_book)
  output.line(birthday_list)
end
set_birthday(input, output) click to toggle source
# File lib/ppl/command/bday.rb, line 53
def set_birthday(input, output)
  contact_id = input.arguments.shift
  birthday   = input.arguments.shift

  if contact_id.nil?
    raise Ppl::Error::IncorrectUsage, "No contact specified"
  end
  contact = @storage.require_contact(contact_id)

  begin
    date = Date.parse birthday
  rescue ArgumentError
    raise Ppl::Error::IncorrectUsage, "Invalid date '#{birthday}'"
  end
  contact.birthday = date
  @storage.save_contact(contact)
end
show_birthday(input, output) click to toggle source
# File lib/ppl/command/bday.rb, line 37
def show_birthday(input, output)
  contact_id = input.arguments.shift
  if contact_id.nil?
    raise Ppl::Error::IncorrectUsage, "No contact specified"
  end
  contact = @storage.require_contact(contact_id)

  birthday = @show_format.process(contact)
  if birthday != ""
    output.line(birthday)
    true
  else
    false
  end
end