ppl 1.14.1 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/Gemfile +2 -1
  2. data/Gemfile.lock +3 -1
  3. data/lib/ppl/adapter/color/colored.rb +15 -0
  4. data/lib/ppl/adapter/color.rb +9 -0
  5. data/lib/ppl/application/bootstrap.rb +309 -61
  6. data/lib/ppl/application/configuration.rb +15 -0
  7. data/lib/ppl/command/age.rb +0 -5
  8. data/lib/ppl/command/bday.rb +0 -5
  9. data/lib/ppl/command/email.rb +1 -3
  10. data/lib/ppl/command/ls.rb +0 -5
  11. data/lib/ppl/command/mutt.rb +0 -4
  12. data/lib/ppl/command/name.rb +0 -5
  13. data/lib/ppl/command/nick.rb +1 -3
  14. data/lib/ppl/command/org.rb +1 -3
  15. data/lib/ppl/command/phone.rb +1 -3
  16. data/lib/ppl/command/post.rb +0 -5
  17. data/lib/ppl/command/url.rb +1 -3
  18. data/lib/ppl/format/address_book/ages.rb +2 -4
  19. data/lib/ppl/format/address_book/birthdays.rb +2 -2
  20. data/lib/ppl/format/address_book/email_addresses.rb +3 -3
  21. data/lib/ppl/format/address_book/names.rb +2 -2
  22. data/lib/ppl/format/address_book/nicknames.rb +2 -2
  23. data/lib/ppl/format/address_book/one_line.rb +2 -2
  24. data/lib/ppl/format/address_book/organizations.rb +2 -2
  25. data/lib/ppl/format/address_book/phone_numbers.rb +2 -2
  26. data/lib/ppl/format/address_book/postal_addresses.rb +2 -2
  27. data/lib/ppl/format/address_book/urls.rb +2 -2
  28. data/lib/ppl/format/contact/age.rb +13 -1
  29. data/lib/ppl/format/contact/birthday.rb +11 -0
  30. data/lib/ppl/format/contact/email_addresses.rb +19 -1
  31. data/lib/ppl/format/contact/name.rb +18 -2
  32. data/lib/ppl/format/contact/nicknames.rb +19 -1
  33. data/lib/ppl/format/contact/organization.rb +19 -1
  34. data/lib/ppl/format/contact/phone_number.rb +19 -1
  35. data/lib/ppl/format/contact/urls.rb +19 -1
  36. data/lib/ppl/format/table.rb +15 -6
  37. data/lib/ppl.rb +3 -1
  38. data/ppl.gemspec +4 -2
  39. data/spec/ppl/adapter/color/colored_spec.rb +24 -0
  40. data/spec/ppl/adapter/color_spec.rb +15 -0
  41. data/spec/ppl/application/bootstrap_spec.rb +403 -25
  42. data/spec/ppl/application/configuration_spec.rb +46 -0
  43. data/spec/ppl/command/mutt_spec.rb +4 -0
  44. data/spec/ppl/format/address_book/ages_spec.rb +10 -0
  45. data/spec/ppl/format/address_book/birthdays_spec.rb +10 -0
  46. data/spec/ppl/format/address_book/email_addresses_spec.rb +12 -2
  47. data/spec/ppl/format/address_book/names_spec.rb +10 -0
  48. data/spec/ppl/format/address_book/nicknames_spec.rb +10 -0
  49. data/spec/ppl/format/address_book/one_line_spec.rb +10 -0
  50. data/spec/ppl/format/address_book/organizations_spec.rb +10 -0
  51. data/spec/ppl/format/address_book/phone_numbers_spec.rb +10 -0
  52. data/spec/ppl/format/address_book/postal_addresses_spec.rb +10 -0
  53. data/spec/ppl/format/address_book/urls_spec.rb +10 -0
  54. data/spec/ppl/format/contact/age_spec.rb +10 -0
  55. data/spec/ppl/format/contact/birthday_spec.rb +8 -0
  56. data/spec/ppl/format/contact/email_addresses_spec.rb +8 -0
  57. data/spec/ppl/format/contact/name_spec.rb +8 -0
  58. data/spec/ppl/format/contact/nicknames_spec.rb +8 -0
  59. data/spec/ppl/format/contact/organization_spec.rb +8 -0
  60. data/spec/ppl/format/contact/phone_number_spec.rb +8 -0
  61. data/spec/ppl/format/contact/urls_spec.rb +8 -0
  62. data/spec/ppl/format/table_spec.rb +20 -0
  63. metadata +38 -2
data/Gemfile CHANGED
@@ -1,7 +1,8 @@
1
1
 
2
- source :rubygems
2
+ source "https://rubygems.org"
3
3
 
4
4
  gem "inifile", "2.0.2"
5
+ gem "morphine", "0.1.1"
5
6
  gem "rugged", "0.17.0.b6"
6
7
  gem "vpim", "12.1.12", :git => "git://github.com/sam-github/vpim.git"
7
8
 
data/Gemfile.lock CHANGED
@@ -5,11 +5,12 @@ GIT
5
5
  vpim (12.1.12)
6
6
 
7
7
  GEM
8
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
9
9
  specs:
10
10
  diff-lcs (1.1.3)
11
11
  fakefs (0.4.1)
12
12
  inifile (2.0.2)
13
+ morphine (0.1.1)
13
14
  rake (10.0.1)
14
15
  rspec (2.12.0)
15
16
  rspec-core (~> 2.12.0)
@@ -27,6 +28,7 @@ PLATFORMS
27
28
  DEPENDENCIES
28
29
  fakefs
29
30
  inifile (= 2.0.2)
31
+ morphine (= 0.1.1)
30
32
  rake
31
33
  rspec
32
34
  rugged (= 0.17.0.b6)
@@ -0,0 +1,15 @@
1
+
2
+ require "colored"
3
+
4
+ class Ppl::Adapter::Color::Colored
5
+
6
+ def colorize(string, color)
7
+ if Colored::COLORS[color].nil?
8
+ string
9
+ else
10
+ string.send(color)
11
+ end
12
+ end
13
+
14
+ end
15
+
@@ -0,0 +1,9 @@
1
+
2
+ class Ppl::Adapter::Color
3
+
4
+ def colorize(string, color)
5
+ raise NotImplementedError
6
+ end
7
+
8
+ end
9
+
@@ -1,101 +1,349 @@
1
1
 
2
+ require "morphine"
3
+
2
4
  class Ppl::Application::Bootstrap
3
5
 
4
- def commands
5
- commands = [
6
- Ppl::Command::Add.new,
7
- Ppl::Command::Age.new,
8
- Ppl::Command::Bday.new,
9
- Ppl::Command::Email.new,
10
- Ppl::Command::Help.new,
11
- Ppl::Command::Init.new,
12
- Ppl::Command::Ls.new,
13
- Ppl::Command::Mutt.new,
14
- Ppl::Command::Mv.new,
15
- Ppl::Command::Name.new,
16
- Ppl::Command::Nick.new,
17
- Ppl::Command::Org.new,
18
- Ppl::Command::Phone.new,
19
- Ppl::Command::Post.new,
20
- Ppl::Command::Rm.new,
21
- Ppl::Command::Shell.new,
22
- Ppl::Command::Show.new,
23
- Ppl::Command::Url.new,
24
- Ppl::Command::Version.new,
25
- ]
26
- commands += git_commands
27
- commands.each do |command|
28
- command.storage = storage_adapter
29
- end
30
- return commands
31
- end
32
-
33
- def command_suite
6
+ include Morphine
7
+
8
+ register :command_add do
9
+ add = Ppl::Command::Add.new
10
+ add.storage = storage_adapter
11
+ add
12
+ end
13
+
14
+ register :command_age do
15
+ age = Ppl::Command::Age.new
16
+ age.storage = storage_adapter
17
+ age.list_format = format_address_book_ages
18
+ age.show_format = format_contact_age
19
+ age
20
+ end
21
+
22
+ register :command_bday do
23
+ bday = Ppl::Command::Bday.new
24
+ bday.storage = storage_adapter
25
+ bday.list_format = format_address_book_birthdays
26
+ bday.show_format = format_contact_birthday
27
+ bday
28
+ end
29
+
30
+ register :command_email do
31
+ email = Ppl::Command::Email.new
32
+ email.storage = storage_adapter
33
+ email.list_format = format_address_book_email_addresses
34
+ email.show_format = format_contact_email_addresses
35
+ email
36
+ end
37
+
38
+ register :command_help do
39
+ help = Ppl::Command::Help.new
40
+ help.storage = storage_adapter
41
+ help
42
+ end
43
+
44
+ register :command_init do
45
+ init = Ppl::Command::Init.new
46
+ init.storage = storage_adapter
47
+ init
48
+ end
49
+
50
+ register :command_ls do
51
+ ls = Ppl::Command::Ls.new
52
+ ls.storage = storage_adapter
53
+ ls.format = format_address_book_one_line
54
+ ls
55
+ end
56
+
57
+ register :command_mutt do
58
+ mutt = Ppl::Command::Mutt.new
59
+ mutt.storage = storage_adapter
60
+ mutt.format = format_address_book_mutt_query
61
+ mutt
62
+ end
63
+
64
+ register :command_mv do
65
+ mv = Ppl::Command::Mv.new
66
+ mv.storage = storage_adapter
67
+ mv
68
+ end
69
+
70
+ register :command_name do
71
+ name = Ppl::Command::Name.new
72
+ name.storage = storage_adapter
73
+ name.list_format = format_address_book_names
74
+ name.show_format = format_contact_name
75
+ name
76
+ end
77
+
78
+ register :command_nick do
79
+ nick = Ppl::Command::Nick.new
80
+ nick.storage = storage_adapter
81
+ nick.list_format = format_address_book_nicknames
82
+ nick.show_format = format_contact_nicknames
83
+ nick
84
+ end
85
+
86
+ register :command_org do
87
+ org = Ppl::Command::Org.new
88
+ org.list_format = format_address_book_organizations
89
+ org.show_format = format_contact_organizations
90
+ org.storage = storage_adapter
91
+ org
92
+ end
93
+
94
+ register :command_phone do
95
+ phone = Ppl::Command::Phone.new
96
+ phone.storage = storage_adapter
97
+ phone.list_format = format_address_book_phone_numbers
98
+ phone.show_format = format_contact_phone_numbers
99
+ phone
100
+ end
101
+
102
+ register :command_post do
103
+ post = Ppl::Command::Post.new
104
+ post.storage = storage_adapter
105
+ post.list_format = format_address_book_postal_addresses
106
+ post.show_format = format_contact_postal_addresses
107
+ post
108
+ end
109
+
110
+ register :command_pull do
111
+ pull = Ppl::Command::Execute.new("pull", "git pull", "Execute 'git pull' in the address book directory")
112
+ pull.storage = storage_adapter
113
+ pull
114
+ end
115
+
116
+ register :command_push do
117
+ push = Ppl::Command::Execute.new("push", "git push", "Execute 'git push' in the address book directory")
118
+ push.storage = storage_adapter
119
+ push
120
+ end
121
+
122
+ register :command_remote do
123
+ remote = Ppl::Command::Execute.new("remote", "git remote", "Execute 'git remote' in the address book directory")
124
+ remote.storage = storage_adapter
125
+ remote
126
+ end
127
+
128
+ register :command_rm do
129
+ rm = Ppl::Command::Rm.new
130
+ rm.storage = storage_adapter
131
+ rm
132
+ end
133
+
134
+ register :command_shell do
135
+ shell = Ppl::Command::Shell.new
136
+ shell.storage = storage_adapter
137
+ shell
138
+ end
139
+
140
+ register :command_show do
141
+ show = Ppl::Command::Show.new
142
+ show.storage = storage_adapter
143
+ show
144
+ end
145
+
146
+ register :command_url do
147
+ url = Ppl::Command::Url.new
148
+ url.storage = storage_adapter
149
+ url.list_format = format_address_book_urls
150
+ url.show_format = format_contact_urls
151
+ url
152
+ end
153
+
154
+ register :command_version do
155
+ version = Ppl::Command::Version.new
156
+ version.storage = storage_adapter
157
+ version
158
+ end
159
+
160
+ register :command_suite do
34
161
  suite = Ppl::Application::CommandSuite.new
35
- commands.each do |command|
36
- suite.add_command(command)
37
- end
162
+ suite.add_command command_add
163
+ suite.add_command command_age
164
+ suite.add_command command_bday
165
+ suite.add_command command_email
166
+ suite.add_command command_help
167
+ suite.add_command command_init
168
+ suite.add_command command_ls
169
+ suite.add_command command_mutt
170
+ suite.add_command command_mv
171
+ suite.add_command command_name
172
+ suite.add_command command_nick
173
+ suite.add_command command_org
174
+ suite.add_command command_phone
175
+ suite.add_command command_post
176
+ suite.add_command command_pull
177
+ suite.add_command command_push
178
+ suite.add_command command_remote
179
+ suite.add_command command_rm
180
+ suite.add_command command_shell
181
+ suite.add_command command_show
182
+ suite.add_command command_url
183
+ suite.add_command command_version
38
184
  suite.find_command("help").command_suite = suite
39
- return suite
185
+ suite
40
186
  end
41
187
 
42
- def configuration
43
- config = Ppl::Application::Configuration.new
44
- return config
188
+ register :configuration do
189
+ Ppl::Application::Configuration.new
45
190
  end
46
191
 
47
- def execute_command
192
+ register :execute_command do
48
193
  command = Ppl::Command::Execute.new(nil, nil, nil)
49
194
  command.storage = storage_adapter
50
195
  command
51
196
  end
52
197
 
53
- def git_commands
54
- [
55
- Ppl::Command::Execute.new("pull", "git pull", "Execute 'git pull' in the address book directory"),
56
- Ppl::Command::Execute.new("push", "git push", "Execute 'git push' in the address book directory"),
57
- Ppl::Command::Execute.new("remote", "git remote", "Execute 'git remote' in the address book directory"),
58
- ]
198
+ register :format_address_book_ages do
199
+ config = configuration
200
+ colors = config.color_enabled("age") ? config.command_colors("age") : {}
201
+ Ppl::Format::AddressBook::Ages.new(colors)
202
+ end
203
+
204
+ register :format_address_book_birthdays do
205
+ config = configuration
206
+ colors = config.color_enabled("bday") ? config.command_colors("bday") : {}
207
+ Ppl::Format::AddressBook::Birthdays.new(colors)
208
+ end
209
+
210
+ register :format_address_book_email_addresses do
211
+ config = configuration
212
+ colors = config.color_enabled("email") ? config.command_colors("email") : {}
213
+ Ppl::Format::AddressBook::EmailAddresses.new(colors)
214
+ end
215
+
216
+ register :format_address_book_mutt_query do
217
+ Ppl::Format::AddressBook::MuttQuery.new
218
+ end
219
+
220
+ register :format_address_book_names do
221
+ config = configuration
222
+ colors = config.color_enabled("name") ? config.command_colors("name") : {}
223
+ Ppl::Format::AddressBook::Names.new(colors)
224
+ end
225
+
226
+ register :format_address_book_nicknames do
227
+ config = configuration
228
+ colors = config.color_enabled("nick") ? config.command_colors("nick") : {}
229
+ Ppl::Format::AddressBook::Nicknames.new(colors)
230
+ end
231
+
232
+ register :format_address_book_one_line do
233
+ config = configuration
234
+ colors = config.color_enabled("ls") ? config.command_colors("ls") : {}
235
+ Ppl::Format::AddressBook::OneLine.new(colors)
236
+ end
237
+
238
+ register :format_address_book_organizations do
239
+ config = configuration
240
+ colors = config.color_enabled("org") ? config.command_colors("org") : {}
241
+ Ppl::Format::AddressBook::Organizations.new(colors)
242
+ end
243
+
244
+ register :format_address_book_phone_numbers do
245
+ config = configuration
246
+ colors = config.color_enabled("phone") ? config.command_colors("phone") : {}
247
+ Ppl::Format::AddressBook::PhoneNumbers.new(colors)
248
+ end
249
+
250
+ register :format_address_book_postal_addresses do
251
+ config = configuration
252
+ colors = config.color_enabled("post") ? config.command_colors("post") : {}
253
+ Ppl::Format::AddressBook::PostalAddresses.new(colors)
254
+ end
255
+
256
+ register :format_address_book_urls do
257
+ config = configuration
258
+ colors = config.color_enabled("url") ? config.command_colors("url") : {}
259
+ Ppl::Format::AddressBook::Urls.new(colors)
260
+ end
261
+
262
+ register :format_contact_age do
263
+ config = configuration
264
+ colors = config.color_enabled("age") ? config.command_colors("age") : {}
265
+ Ppl::Format::Contact::Age.new(colors)
266
+ end
267
+
268
+ register :format_contact_birthday do
269
+ config = configuration
270
+ colors = config.color_enabled("bday") ? config.command_colors("bday") : {}
271
+ Ppl::Format::Contact::Birthday.new(colors)
272
+ end
273
+
274
+ register :format_contact_email_addresses do
275
+ config = configuration
276
+ colors = config.color_enabled("email") ? config.command_colors("email") : {}
277
+ Ppl::Format::Contact::EmailAddresses.new(colors)
278
+ end
279
+
280
+ register :format_contact_name do
281
+ config = configuration
282
+ colors = config.color_enabled("name") ? config.command_colors("name") : {}
283
+ Ppl::Format::Contact::Name.new(colors)
284
+ end
285
+
286
+ register :format_contact_nicknames do
287
+ config = configuration
288
+ colors = config.color_enabled("nick") ? config.command_colors("nick") : {}
289
+ Ppl::Format::Contact::Nicknames.new(colors)
59
290
  end
60
291
 
61
- def input
62
- input = Ppl::Application::Input.new(ARGV.dup)
63
- return input
292
+ register :format_contact_organizations do
293
+ config = configuration
294
+ colors = config.color_enabled("org") ? config.command_colors("org") : {}
295
+ Ppl::Format::Contact::Organization.new(colors)
296
+ end
297
+
298
+ register :format_contact_phone_numbers do
299
+ config = configuration
300
+ colors = config.color_enabled("phone") ? config.command_colors("phone") : {}
301
+ Ppl::Format::Contact::PhoneNumber.new(colors)
64
302
  end
65
303
 
66
- def output
67
- output = Ppl::Application::Output.new($stdout, $stderr)
68
- return output
304
+ register :format_contact_postal_addresses do
305
+ Ppl::Format::Contact::PostalAddress.new
306
+ end
307
+
308
+ register :format_contact_urls do
309
+ config = configuration
310
+ colors = config.color_enabled("url") ? config.command_colors("url") : {}
311
+ Ppl::Format::Contact::Urls.new(colors)
69
312
  end
70
313
 
71
- def router
314
+ register :input do
315
+ Ppl::Application::Input.new(ARGV.dup)
316
+ end
317
+
318
+ register :output do
319
+ Ppl::Application::Output.new($stdout, $stderr)
320
+ end
321
+
322
+ register :router do
72
323
  router = Ppl::Application::Router.new(command_suite)
73
324
  router.aliases = configuration.aliases
74
325
  router.default = "help"
75
326
  router.execute_command = execute_command
76
- return router
327
+ router
77
328
  end
78
329
 
79
- def shell
330
+ register :shell do
80
331
  shell = Ppl::Application::Shell.new
81
332
  shell.router = router
82
- return shell
333
+ shell
83
334
  end
84
335
 
85
- def storage_adapter
336
+ register :storage_adapter do
86
337
  config = configuration
87
-
88
338
  directory = Dir.new(config.address_book_path)
89
339
  factory = Ppl::Adapter::Storage::Factory.new(vcard_adapter)
90
340
  storage = factory.load_adapter(directory)
91
-
92
341
  storage.vcard_adapter = vcard_adapter
93
- return storage
342
+ storage
94
343
  end
95
344
 
96
- def vcard_adapter
97
- vcard = Ppl::Adapter::Vcard::Vpim.new
98
- return vcard
345
+ register :vcard_adapter do
346
+ Ppl::Adapter::Vcard::Vpim.new
99
347
  end
100
348
 
101
349
  end
@@ -28,6 +28,21 @@ class Ppl::Application::Configuration
28
28
  end
29
29
  end
30
30
 
31
+ def color_enabled(command_name)
32
+ config = user_configuration
33
+ if !config["color"].nil? && config["color"][command_name] == "true"
34
+ true
35
+ else
36
+ false
37
+ end
38
+ end
39
+
40
+ def command_colors(command_name)
41
+ config = user_configuration
42
+ search = "color \"#{command_name}\""
43
+ result = config[search]
44
+ end
45
+
31
46
  private
32
47
 
33
48
  def default_configuration
@@ -7,11 +7,6 @@ class Ppl::Command::Age < Ppl::Application::Command
7
7
  attr_writer :list_format
8
8
  attr_writer :show_format
9
9
 
10
- def initialize
11
- @list_format = Ppl::Format::AddressBook::Ages.new
12
- @show_format = Ppl::Format::Contact::Age.new
13
- end
14
-
15
10
  def options(parser, options)
16
11
  parser.banner = "usage: ppl age"
17
12
  end
@@ -7,11 +7,6 @@ class Ppl::Command::Bday < Ppl::Application::Command
7
7
  attr_writer :list_format
8
8
  attr_writer :show_format
9
9
 
10
- def initialize
11
- @list_format = Ppl::Format::AddressBook::Birthdays.new
12
- @show_format = Ppl::Format::Contact::Birthday.new
13
- end
14
-
15
10
  def options(parser, options)
16
11
  parser.banner = "usage: ppl birthday <contact> [<date>]"
17
12
  end
@@ -5,9 +5,7 @@ class Ppl::Command::Email < Ppl::Command::Attribute
5
5
  description "Show or change a contact's email address"
6
6
 
7
7
  def initialize
8
- @attribute = :email_addresses
9
- @show_format = Ppl::Format::Contact::EmailAddresses.new
10
- @list_format = Ppl::Format::AddressBook::EmailAddresses.new
8
+ @attribute = :email_addresses
11
9
  end
12
10
 
13
11
  def options(parser, options)
@@ -6,10 +6,6 @@ class Ppl::Command::Ls < Ppl::Application::Command
6
6
 
7
7
  attr_writer :format
8
8
 
9
- def initialize
10
- @format = Ppl::Format::AddressBook::OneLine.new
11
- end
12
-
13
9
  def options(parser, options)
14
10
  parser.banner = "usage: ppl ls"
15
11
  end
@@ -17,7 +13,6 @@ class Ppl::Command::Ls < Ppl::Application::Command
17
13
  def execute(input, output)
18
14
  address_book = @storage.load_address_book
19
15
  formatted = @format.process(address_book)
20
-
21
16
  output.line(formatted)
22
17
  return true
23
18
  end
@@ -6,10 +6,6 @@ class Ppl::Command::Mutt < Ppl::Application::Command
6
6
 
7
7
  attr_writer :format
8
8
 
9
- def initialize
10
- @format = Ppl::Format::AddressBook::MuttQuery.new
11
- end
12
-
13
9
  def options(parser, options)
14
10
  parser.banner = "usage: ppl mutt <query>"
15
11
  end
@@ -7,11 +7,6 @@ class Ppl::Command::Name < Ppl::Application::Command
7
7
  attr_writer :show_format
8
8
  attr_writer :list_format
9
9
 
10
- def initialize
11
- @show_format = Ppl::Format::Contact::Name.new
12
- @list_format = Ppl::Format::AddressBook::Names.new
13
- end
14
-
15
10
  def options(parser, options)
16
11
  parser.banner = "usage: ppl name <contact> [<name>]"
17
12
  end
@@ -5,9 +5,7 @@ class Ppl::Command::Nick < Ppl::Command::Attribute
5
5
  description "List, show or change nicknames"
6
6
 
7
7
  def initialize
8
- @attribute = :nicknames
9
- @show_format = Ppl::Format::Contact::Nicknames.new
10
- @list_format = Ppl::Format::AddressBook::Nicknames.new
8
+ @attribute = :nicknames
11
9
  end
12
10
 
13
11
  def options(parser, options)
@@ -5,9 +5,7 @@ class Ppl::Command::Org < Ppl::Command::Attribute
5
5
  description "List, show or change organizations"
6
6
 
7
7
  def initialize
8
- @attribute = :organizations
9
- @show_format = Ppl::Format::Contact::Organization.new
10
- @list_format = Ppl::Format::AddressBook::Organizations.new
8
+ @attribute = :organizations
11
9
  end
12
10
 
13
11
  def options(parser, options)
@@ -5,9 +5,7 @@ class Ppl::Command::Phone < Ppl::Command::Attribute
5
5
  description "List, show or change phone numbers"
6
6
 
7
7
  def initialize
8
- @attribute = :phone_numbers
9
- @show_format = Ppl::Format::Contact::PhoneNumber.new
10
- @list_format = Ppl::Format::AddressBook::PhoneNumbers.new
8
+ @attribute = :phone_numbers
11
9
  end
12
10
 
13
11
  def options(parser, options)
@@ -7,11 +7,6 @@ class Ppl::Command::Post < Ppl::Application::Command
7
7
  attr_writer :show_format
8
8
  attr_writer :list_format
9
9
 
10
- def initialize
11
- @show_format = Ppl::Format::Contact::PostalAddress.new
12
- @list_format = Ppl::Format::AddressBook::PostalAddresses.new
13
- end
14
-
15
10
  def options(parser, options)
16
11
  parser.banner = "usage: ppl post <contact> [address]"
17
12
 
@@ -5,9 +5,7 @@ class Ppl::Command::Url < Ppl::Command::Attribute
5
5
  description "List, show or change URLs"
6
6
 
7
7
  def initialize
8
- @attribute = :urls
9
- @show_format = Ppl::Format::Contact::Urls.new
10
- @list_format = Ppl::Format::AddressBook::Urls.new
8
+ @attribute = :urls
11
9
  end
12
10
 
13
11
  def options(parser, options)
@@ -4,8 +4,8 @@ class Ppl::Format::AddressBook::Ages < Ppl::Format::AddressBook
4
4
  attr_writer :table
5
5
  attr_writer :date
6
6
 
7
- def initialize
8
- @table = Ppl::Format::Table.new([:id, :age])
7
+ def initialize(colors={})
8
+ @table = Ppl::Format::Table.new([:id, :age], colors)
9
9
  @date = Date.today
10
10
  end
11
11
 
@@ -14,7 +14,6 @@ class Ppl::Format::AddressBook::Ages < Ppl::Format::AddressBook
14
14
  @table.to_s
15
15
  end
16
16
 
17
-
18
17
  private
19
18
 
20
19
  def add_row(contact)
@@ -24,6 +23,5 @@ class Ppl::Format::AddressBook::Ages < Ppl::Format::AddressBook
24
23
  })
25
24
  end
26
25
 
27
-
28
26
  end
29
27
 
@@ -3,8 +3,8 @@ class Ppl::Format::AddressBook::Birthdays < Ppl::Format::AddressBook
3
3
 
4
4
  attr_writer :table
5
5
 
6
- def initialize
7
- @table = Ppl::Format::Table.new([:id, :birthday])
6
+ def initialize(colors={})
7
+ @table = Ppl::Format::Table.new([:id, :birthday], colors)
8
8
  end
9
9
 
10
10
  def process(address_book)