lib/ppl/command/url.rb in ppl-1.9.0 vs lib/ppl/command/url.rb in ppl-1.10.0
- old
+ new
@@ -1,82 +1,21 @@
-class Ppl::Command::Url < Ppl::Application::Command
+class Ppl::Command::Url < Ppl::Command::Attribute
name "url"
description "List, show or change URLs"
- attr_writer :show_format
- attr_writer :list_format
-
def initialize
+ @attribute = :urls
@show_format = Ppl::Format::Contact::Urls.new
@list_format = Ppl::Format::AddressBook::Urls.new
end
def options(parser, options)
parser.banner = "usage: ppl url <contact> [<url>]"
parser.on("-d", "--delete", "delete url") do
options[:delete] = true
end
- end
-
- def execute(input, output)
- action = determine_action(input)
- send(action, input, output)
- end
-
-
- private
-
- def determine_action(input)
- if input.arguments[0].nil?
- :list_urls
- elsif input.arguments[1].nil?
- :show_urls
- elsif input.options[:delete]
- :delete_url
- else
- :set_url
- end
- end
-
- def list_urls(input, output)
- address_book = @storage.load_address_book
- url_list = @list_format.process(address_book)
- output.line(url_list)
- end
-
- def show_urls(input, output)
- contact = @storage.require_contact(input.arguments[0])
- urls = @show_format.process(contact)
- if urls != ""
- output.line(urls)
- true
- else
- false
- end
- end
-
- def delete_url(input, output)
- contact = @storage.require_contact(input.arguments[0])
- old_url = input.arguments[1].dup
- contact.urls.delete(old_url) do
- message = sprintf("%s has no such url %s", contact.id, old_url)
- raise Ppl::Error::IncorrectUsage, message
- end
- @storage.save_contact(contact)
- end
-
- def set_url(input, output)
- contact = @storage.require_contact(input.arguments[0])
- new_url = input.arguments[1].dup
- if contact.urls.include?(new_url)
- message = sprintf("%s already has url %s", contact.id, new_url)
- raise Ppl::Error::IncorrectUsage, message
- else
- contact.urls.push(new_url)
- end
- @storage.save_contact(contact)
end
end