class Ppl::Command::Post
Attributes
address_book_format[W]
address_service[W]
contact_format[W]
postal_address_format[W]
Public Instance Methods
execute(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 49 def execute(input, output) action = determine_action(input) send(action, input, output) end
options(parser, options)
click to toggle source
# File lib/ppl/command/post.rb, line 11 def options(parser, options) parser.banner = "usage: ppl post <contact> [address]" parser.on("-s", "--street <street-address>") do |street| options[:street] = street end parser.on("-z", "--postal-code <postal-code>") do |postal_code| options[:postal_code] = postal_code end parser.on("-p", "--po-box <po-box>") do |po_box| options[:po_box] = po_box end parser.on("-l", "--locality <locality>") do |locality| options[:locality] = locality end parser.on("-r", "--region <region>") do |region| options[:region] = region end parser.on("-c", "--country <country>") do |country| options[:country] = country end parser.on("-d", "--delete") do options[:delete] = true end parser.on("-m", "--move <new-id>") do |new_id| options[:new_id] = new_id 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 end
Private Instance Methods
create_postal_address(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 119 def create_postal_address(input, output) @address_service.add(@contact, input.arguments[1], input.options) @storage.save_contact(@contact) true end
delete_postal_address(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 106 def delete_postal_address(input, output) contact = @storage.require_contact(input.arguments[0]) @address_service.remove(contact, input.arguments[1]) @storage.save_contact(contact) true end
determine_action(input)
click to toggle source
# File lib/ppl/command/post.rb, line 57 def determine_action(input) if input.arguments.length < 1 :list_address_book_postal_addresses elsif input.arguments.length < 2 :show_contact_postal_addresses elsif input.options[:delete] :delete_postal_address elsif input.options.empty? :show_postal_address elsif existing_address?(input) :update_postal_address else :create_postal_address end end
existing_address?(input)
click to toggle source
# File lib/ppl/command/post.rb, line 73 def existing_address?(input) @contact = @storage.require_contact(input.arguments[0]) !@contact.postal_addresses.find { |p| p.id == input.arguments[1] }.nil? end
list_address_book_postal_addresses(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 78 def list_address_book_postal_addresses(input, output) address_book = @storage.load_address_book address_list = @address_book_format.process(address_book) output.line(address_list) end
show_contact_postal_addresses(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 84 def show_contact_postal_addresses(input, output) contact = @storage.require_contact(input.arguments[0]) address = @contact_format.process(contact) if address != "" output.line(address) true else false end end
show_postal_address(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 95 def show_postal_address(input, output) contact = @storage.require_contact(input.arguments[0]) address = contact.postal_addresses.find { |pa| pa.id == input.arguments[1] } if address.nil? raise Ppl::Error::PostalAddressNotFound, input.arguments[1] end display = @postal_address_format.process(address) output.line(display) true end
update_postal_address(input, output)
click to toggle source
# File lib/ppl/command/post.rb, line 113 def update_postal_address(input, output) @address_service.update(@contact, input.arguments[1], input.options) @storage.save_contact(@contact) true end