ppl 2.0.0 → 2.1.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.
- checksums.yaml +4 -4
- data/lib/ppl.rb +5 -2
- data/lib/ppl/adapter/vcard/greencard.rb +8 -3
- data/lib/ppl/application/bootstrap.rb +10 -3
- data/lib/ppl/command/add.rb +3 -1
- data/lib/ppl/command/mutt.rb +2 -2
- data/lib/ppl/command/name.rb +23 -3
- data/lib/ppl/entity/name.rb +14 -0
- data/lib/ppl/format/contact/full.rb +1 -1
- data/lib/ppl/format/name.rb +7 -0
- data/lib/ppl/format/{contact/name.rb → name/full_only.rb} +4 -4
- data/lib/ppl/service/name.rb +23 -0
- data/ppl.gemspec +2 -2
- data/spec/ppl/adapter/vcard/greencard_spec.rb +30 -4
- data/spec/ppl/application/bootstrap_spec.rb +9 -3
- data/spec/ppl/command/add_spec.rb +7 -1
- data/spec/ppl/command/mutt_spec.rb +6 -5
- data/spec/ppl/command/name_spec.rb +24 -9
- data/spec/ppl/entity/name_spec.rb +16 -0
- data/spec/ppl/format/contact/full_spec.rb +6 -3
- data/spec/ppl/format/name/full_only_spec.rb +31 -0
- data/spec/ppl/format/name_spec.rb +18 -0
- data/spec/ppl/service/name_spec.rb +60 -0
- metadata +10 -4
- data/spec/ppl/format/contact/name_spec.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95e88afd4d3b0aa9e6af8d3e5362b8826ff0a338
|
4
|
+
data.tar.gz: 4dd553d7deaeb6880d958c92c9797230c8a601d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77825be6cccd5eda789c2ae779c94fccea8e19b703f880b22e13dd7c4acd68e26e57963feddd0e77a3bf48a8aa28d33f83973ad84075427d408570889216feab
|
7
|
+
data.tar.gz: 5d4b42a641b6c9f7fe3d048afcbed0009eaab79262495e6d0c944a05ebf6179802a508b6aac0308abe048d88915bebf862bd2789a45d44e0967554f2d77ed183
|
data/lib/ppl.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
module Ppl
|
3
3
|
|
4
|
-
Version = "2.
|
4
|
+
Version = "2.1.0"
|
5
5
|
|
6
6
|
module Adapter
|
7
7
|
end
|
@@ -74,6 +74,7 @@ require "ppl/command/scrape"
|
|
74
74
|
require "ppl/entity/address_book"
|
75
75
|
require "ppl/entity/contact"
|
76
76
|
require "ppl/entity/email_address"
|
77
|
+
require "ppl/entity/name"
|
77
78
|
require "ppl/entity/phone_number"
|
78
79
|
require "ppl/entity/postal_address"
|
79
80
|
|
@@ -99,7 +100,6 @@ require "ppl/format/contact/age"
|
|
99
100
|
require "ppl/format/contact/birthday"
|
100
101
|
require "ppl/format/contact/email_addresses"
|
101
102
|
require "ppl/format/contact/full"
|
102
|
-
require "ppl/format/contact/name"
|
103
103
|
require "ppl/format/contact/nicknames"
|
104
104
|
require "ppl/format/contact/organization"
|
105
105
|
require "ppl/format/contact/phone_number"
|
@@ -110,12 +110,15 @@ require "ppl/format/custom"
|
|
110
110
|
require "ppl/format/custom/contact"
|
111
111
|
require "ppl/format/custom/email_address"
|
112
112
|
require "ppl/format/custom/phone_number"
|
113
|
+
require "ppl/format/name"
|
114
|
+
require "ppl/format/name/full_only"
|
113
115
|
require "ppl/format/postal_address"
|
114
116
|
require "ppl/format/postal_address/multi_line"
|
115
117
|
require "ppl/format/postal_address/one_line"
|
116
118
|
require "ppl/format/table"
|
117
119
|
|
118
120
|
require "ppl/service/email_address"
|
121
|
+
require "ppl/service/name"
|
119
122
|
require "ppl/service/phone_number"
|
120
123
|
require "ppl/service/postal_address"
|
121
124
|
|
@@ -53,8 +53,12 @@ class Ppl::Adapter::Vcard::GreenCard
|
|
53
53
|
|
54
54
|
def encode_name(contact, vcard_maker)
|
55
55
|
vcard_maker.add_name do |name|
|
56
|
-
name.given
|
57
|
-
name.
|
56
|
+
name.given = contact.name.given unless contact.name.given.nil?
|
57
|
+
name.family = contact.name.family unless contact.name.family.nil?
|
58
|
+
name.additional = contact.name.middle unless contact.name.middle.nil?
|
59
|
+
name.fullname = contact.name.full unless contact.name.full.nil?
|
60
|
+
name.prefix = contact.name.prefix unless contact.name.prefix.nil?
|
61
|
+
name.suffix = contact.name.suffix unless contact.name.suffix.nil?
|
58
62
|
end
|
59
63
|
end
|
60
64
|
|
@@ -112,8 +116,9 @@ class Ppl::Adapter::Vcard::GreenCard
|
|
112
116
|
end
|
113
117
|
|
114
118
|
def decode_name(vcard, contact)
|
119
|
+
contact.name = Ppl::Entity::Name.new
|
115
120
|
if !vcard.name.nil?
|
116
|
-
contact.name = vcard.name.fullname
|
121
|
+
contact.name.full = vcard.name.fullname
|
117
122
|
end
|
118
123
|
end
|
119
124
|
|
@@ -8,6 +8,7 @@ class Ppl::Application::Bootstrap
|
|
8
8
|
register :command_add do
|
9
9
|
add = Ppl::Command::Add.new
|
10
10
|
add.storage = storage_adapter
|
11
|
+
add.name_service = name_service
|
11
12
|
add
|
12
13
|
end
|
13
14
|
|
@@ -82,7 +83,8 @@ class Ppl::Application::Bootstrap
|
|
82
83
|
name = Ppl::Command::Name.new
|
83
84
|
name.storage = storage_adapter
|
84
85
|
name.list_format = format_address_book_names
|
85
|
-
name.show_format =
|
86
|
+
name.show_format = format_name_full_only
|
87
|
+
name.name_service = name_service
|
86
88
|
name
|
87
89
|
end
|
88
90
|
|
@@ -299,9 +301,9 @@ class Ppl::Application::Bootstrap
|
|
299
301
|
Ppl::Format::Contact::EmailAddresses.new(colors)
|
300
302
|
end
|
301
303
|
|
302
|
-
register :
|
304
|
+
register :format_name_full_only do
|
303
305
|
colors = configuration.command_colors("name")
|
304
|
-
Ppl::Format::
|
306
|
+
Ppl::Format::Name::FullOnly.new(colors)
|
305
307
|
end
|
306
308
|
|
307
309
|
register :format_contact_nicknames do
|
@@ -377,6 +379,11 @@ class Ppl::Application::Bootstrap
|
|
377
379
|
email_service
|
378
380
|
end
|
379
381
|
|
382
|
+
register :name_service do
|
383
|
+
name_service = Ppl::Service::Name.new
|
384
|
+
name_service
|
385
|
+
end
|
386
|
+
|
380
387
|
register :phone_service do
|
381
388
|
phone_service = Ppl::Service::PhoneNumber.new
|
382
389
|
phone_service.storage = storage_adapter
|
data/lib/ppl/command/add.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
|
2
2
|
class Ppl::Command::Add < Ppl::Application::Command
|
3
3
|
|
4
|
+
attr_writer :name_service
|
5
|
+
|
4
6
|
name "add"
|
5
7
|
description "Add a new contact"
|
6
8
|
|
@@ -22,7 +24,7 @@ class Ppl::Command::Add < Ppl::Application::Command
|
|
22
24
|
|
23
25
|
contact = Ppl::Entity::Contact.new
|
24
26
|
contact.id = contact_id.dup
|
25
|
-
contact.name = contact_name.dup
|
27
|
+
contact.name = @name_service.parse contact_name.dup
|
26
28
|
|
27
29
|
@storage.save_contact(contact)
|
28
30
|
return true
|
data/lib/ppl/command/mutt.rb
CHANGED
@@ -53,9 +53,9 @@ class Ppl::Command::Mutt < Ppl::Application::Command
|
|
53
53
|
|
54
54
|
def match_by_name(contact, query)
|
55
55
|
if @options[:ignore_case]
|
56
|
-
contact.name.downcase.include? query.downcase
|
56
|
+
contact.name.full.downcase.include? query.downcase
|
57
57
|
else
|
58
|
-
contact.name.include? query
|
58
|
+
contact.name.full.include? query
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
data/lib/ppl/command/name.rb
CHANGED
@@ -6,9 +6,25 @@ class Ppl::Command::Name < Ppl::Application::Command
|
|
6
6
|
|
7
7
|
attr_writer :show_format
|
8
8
|
attr_writer :list_format
|
9
|
+
attr_writer :name_service
|
9
10
|
|
10
11
|
def options(parser, options)
|
11
12
|
parser.banner = "usage: ppl name <contact> [<name>]"
|
13
|
+
parser.on("-f", "--family <family-name(s)>") do |family|
|
14
|
+
options[:family] = family
|
15
|
+
end
|
16
|
+
parser.on("-g", "--given <given-name(s)>") do |given|
|
17
|
+
options[:given] = given
|
18
|
+
end
|
19
|
+
parser.on("-m", "--middle <middle-name(s)>") do |middle|
|
20
|
+
options[:middle] = middle
|
21
|
+
end
|
22
|
+
parser.on("-p", "--prefix <prefix>") do |prefix|
|
23
|
+
options[:prefix] = prefix
|
24
|
+
end
|
25
|
+
parser.on("-s", "--suffix <suffix>") do |suffix|
|
26
|
+
options[:suffix] = suffix
|
27
|
+
end
|
12
28
|
end
|
13
29
|
|
14
30
|
def execute(input, output)
|
@@ -21,7 +37,7 @@ class Ppl::Command::Name < Ppl::Application::Command
|
|
21
37
|
def determine_action(input)
|
22
38
|
if input.arguments[0].nil?
|
23
39
|
:list_names
|
24
|
-
elsif input.arguments[1].nil?
|
40
|
+
elsif input.arguments[1].nil? && input.options.empty?
|
25
41
|
:show_name
|
26
42
|
else
|
27
43
|
:set_name
|
@@ -36,7 +52,7 @@ class Ppl::Command::Name < Ppl::Application::Command
|
|
36
52
|
|
37
53
|
def show_name(input, output)
|
38
54
|
contact = @storage.require_contact(input.arguments[0])
|
39
|
-
name = @show_format.process(contact)
|
55
|
+
name = @show_format.process(contact.name)
|
40
56
|
if name != ""
|
41
57
|
output.line(name)
|
42
58
|
true
|
@@ -47,7 +63,11 @@ class Ppl::Command::Name < Ppl::Application::Command
|
|
47
63
|
|
48
64
|
def set_name(input, output)
|
49
65
|
contact = @storage.require_contact(input.arguments[0])
|
50
|
-
|
66
|
+
options = input.options.dup
|
67
|
+
if !input.arguments[1].nil?
|
68
|
+
options[:full] = input.arguments[1].dup
|
69
|
+
end
|
70
|
+
@name_service.update(contact.name, options)
|
51
71
|
@storage.save_contact(contact)
|
52
72
|
end
|
53
73
|
|
@@ -39,7 +39,7 @@ class Ppl::Format::Contact::Full < Ppl::Format::Contact
|
|
39
39
|
def first_line(contact)
|
40
40
|
line = ""
|
41
41
|
if !contact.name.nil?
|
42
|
-
line += contact.name
|
42
|
+
line += contact.name.full
|
43
43
|
end
|
44
44
|
email_address = choose_first_line_address(contact)
|
45
45
|
unless email_address.nil?
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
class Ppl::Format::
|
2
|
+
class Ppl::Format::Name::FullOnly < Ppl::Format::Name
|
3
3
|
|
4
4
|
attr_writer :color_adapter
|
5
5
|
attr_writer :colors
|
@@ -9,10 +9,10 @@ class Ppl::Format::Contact::Name < Ppl::Format::Contact
|
|
9
9
|
@color_adapter = Ppl::Adapter::Color::Colored.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def process(
|
12
|
+
def process(name)
|
13
13
|
output = ""
|
14
|
-
if !
|
15
|
-
output +=
|
14
|
+
if !name.full.nil?
|
15
|
+
output += name.full
|
16
16
|
end
|
17
17
|
colorize_output(output)
|
18
18
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
class Ppl::Service::Name
|
3
|
+
|
4
|
+
def parse(full_name)
|
5
|
+
parts = full_name.split " "
|
6
|
+
name = Ppl::Entity::Name.new
|
7
|
+
name.full = full_name
|
8
|
+
name.given = parts.shift unless parts[0].nil?
|
9
|
+
name.family = parts.join(" ") unless parts[0].nil?
|
10
|
+
name
|
11
|
+
end
|
12
|
+
|
13
|
+
def update(name, new_values)
|
14
|
+
[:full, :given, :family, :middle, :prefix, :suffix].each do |property_name|
|
15
|
+
if !new_values[property_name].nil?
|
16
|
+
setter = (property_name.to_s + "=").to_sym
|
17
|
+
name.send(setter, new_values[property_name])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
data/ppl.gemspec
CHANGED
@@ -5,6 +5,7 @@ describe Ppl::Adapter::Vcard::GreenCard, "#encode" do
|
|
5
5
|
before(:each) do
|
6
6
|
@adapter = Ppl::Adapter::Vcard::GreenCard.new
|
7
7
|
@contact = Ppl::Entity::Contact.new
|
8
|
+
@contact.name = Ppl::Entity::Name.new
|
8
9
|
@contact.id = "test"
|
9
10
|
end
|
10
11
|
|
@@ -13,11 +14,36 @@ describe Ppl::Adapter::Vcard::GreenCard, "#encode" do
|
|
13
14
|
@adapter.encode(@contact).should include("BDAY:20000101")
|
14
15
|
end
|
15
16
|
|
16
|
-
it "should encode the contact's name" do
|
17
|
-
@contact.name = "John Doe"
|
17
|
+
it "should encode the contact's full name" do
|
18
|
+
@contact.name.full = "John Doe"
|
18
19
|
@adapter.encode(@contact).should include("FN:John Doe")
|
19
20
|
end
|
20
21
|
|
22
|
+
it "should encode the contact's given name" do
|
23
|
+
@contact.name.given = "John"
|
24
|
+
@adapter.encode(@contact).should include("N:;John;;;")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should encode the contact's family name" do
|
28
|
+
@contact.name.family = "Smith"
|
29
|
+
@adapter.encode(@contact).should include("N:Smith;;;;")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should encode the contact's middle name" do
|
33
|
+
@contact.name.middle = "Quentin"
|
34
|
+
@adapter.encode(@contact).should include("N:;;Quentin;;")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should encode the contact's name prefix" do
|
38
|
+
@contact.name.prefix = "Mr."
|
39
|
+
@adapter.encode(@contact).should include("N:;;;Mr.;")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should encode the contact's name suffix" do
|
43
|
+
@contact.name.suffix = "BSc"
|
44
|
+
@adapter.encode(@contact).should include("N:;;;;BSc")
|
45
|
+
end
|
46
|
+
|
21
47
|
it "should encode the contact's email address" do
|
22
48
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("john@example.org")
|
23
49
|
@adapter.encode(@contact).should include("EMAIL:john@example.org")
|
@@ -151,7 +177,7 @@ describe Ppl::Adapter::Vcard::GreenCard, "#decode" do
|
|
151
177
|
].join("\n")
|
152
178
|
contact = @adapter.decode(vcard)
|
153
179
|
|
154
|
-
contact.name.should eq "John Doe"
|
180
|
+
contact.name.full.should eq "John Doe"
|
155
181
|
end
|
156
182
|
|
157
183
|
it "should decode the contact's email address" do
|
@@ -387,7 +413,7 @@ describe Ppl::Adapter::Vcard::GreenCard, "#decode" do
|
|
387
413
|
"END:VCARD",
|
388
414
|
].join("\n")
|
389
415
|
contact = @adapter.decode(vcard)
|
390
|
-
contact.name.should eq "Straße"
|
416
|
+
contact.name.full.should eq "Straße"
|
391
417
|
end
|
392
418
|
|
393
419
|
end
|
@@ -336,16 +336,16 @@ describe Ppl::Application::Bootstrap do
|
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
339
|
-
describe "#
|
339
|
+
describe "#format_name_full_only" do
|
340
340
|
it "should return a Ppl::Format::Contact::Name" do
|
341
|
-
@bootstrap.
|
341
|
+
@bootstrap.format_name_full_only.should be_a(Ppl::Format::Name::FullOnly)
|
342
342
|
end
|
343
343
|
it "should set up colored output if configured to do so" do
|
344
344
|
@colors = {}
|
345
345
|
@config = double(Ppl::Application::Configuration)
|
346
346
|
@bootstrap.stub(:configuration).and_return(@config)
|
347
347
|
@config.should_receive(:command_colors).with("name").and_return(@colors)
|
348
|
-
@bootstrap.
|
348
|
+
@bootstrap.format_name_full_only
|
349
349
|
end
|
350
350
|
end
|
351
351
|
|
@@ -559,6 +559,12 @@ describe Ppl::Application::Bootstrap do
|
|
559
559
|
end
|
560
560
|
end
|
561
561
|
|
562
|
+
describe "#name_service" do
|
563
|
+
it "should return a Ppl::Service::Name" do
|
564
|
+
@bootstrap.name_service.should be_a(Ppl::Service::Name)
|
565
|
+
end
|
566
|
+
end
|
567
|
+
|
562
568
|
describe "#postal_address_service" do
|
563
569
|
it "should return a Ppl::Service::PostalAddress" do
|
564
570
|
@bootstrap.postal_address_service.should be_a(Ppl::Service::PostalAddress)
|
@@ -5,8 +5,10 @@ describe Ppl::Command::Add do
|
|
5
5
|
@command = Ppl::Command::Add.new
|
6
6
|
@input = Ppl::Application::Input.new
|
7
7
|
@storage = double(Ppl::Adapter::Storage)
|
8
|
+
@name_service = double(Ppl::Service::Name)
|
8
9
|
|
9
10
|
@command.storage = @storage
|
11
|
+
@command.name_service = @name_service
|
10
12
|
end
|
11
13
|
|
12
14
|
describe "#name" do
|
@@ -29,8 +31,12 @@ describe Ppl::Command::Add do
|
|
29
31
|
it "should save a new contact" do
|
30
32
|
@storage.should_receive(:save_contact) do |contact|
|
31
33
|
contact.id.should eq "john"
|
32
|
-
contact.name.should
|
34
|
+
contact.name.should be_a(Ppl::Entity::Name)
|
33
35
|
end
|
36
|
+
@name_service
|
37
|
+
.should_receive(:parse)
|
38
|
+
.with("John Doe")
|
39
|
+
.and_return(Ppl::Entity::Name.new)
|
34
40
|
@input.arguments = ["john", "John Doe"]
|
35
41
|
@command.execute(@input, nil)
|
36
42
|
end
|
@@ -10,6 +10,7 @@ describe Ppl::Command::Mutt do
|
|
10
10
|
|
11
11
|
@address_book = Ppl::Entity::AddressBook.new
|
12
12
|
@contact = Ppl::Entity::Contact.new
|
13
|
+
@contact.name = Ppl::Entity::Name.new
|
13
14
|
|
14
15
|
@command.storage = @storage
|
15
16
|
@command.format = @format
|
@@ -36,7 +37,7 @@ describe Ppl::Command::Mutt do
|
|
36
37
|
|
37
38
|
it "should return email address matches" do
|
38
39
|
|
39
|
-
@contact.name = "Test User"
|
40
|
+
@contact.name.full = "Test User"
|
40
41
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("test@example.org")
|
41
42
|
@address_book.contacts.push(@contact)
|
42
43
|
|
@@ -53,7 +54,7 @@ describe Ppl::Command::Mutt do
|
|
53
54
|
|
54
55
|
it "should only return matching email addresses" do
|
55
56
|
@input.arguments.push "prova"
|
56
|
-
@contact.name = "Test User"
|
57
|
+
@contact.name.full = "Test User"
|
57
58
|
|
58
59
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("test@test.org")
|
59
60
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("prova@prova.org")
|
@@ -69,7 +70,7 @@ describe Ppl::Command::Mutt do
|
|
69
70
|
|
70
71
|
it "should return name matches" do
|
71
72
|
|
72
|
-
@contact.name = "Test User"
|
73
|
+
@contact.name.full = "Test User"
|
73
74
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("test@example.org")
|
74
75
|
@address_book.contacts.push(@contact)
|
75
76
|
|
@@ -88,7 +89,7 @@ describe Ppl::Command::Mutt do
|
|
88
89
|
it "should count up email addresses in the status line" do
|
89
90
|
@input.arguments.push "org"
|
90
91
|
|
91
|
-
@contact.name = "Test User"
|
92
|
+
@contact.name.full = "Test User"
|
92
93
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("test@test.org")
|
93
94
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("prova@prova.org")
|
94
95
|
@address_book.contacts << @contact
|
@@ -108,7 +109,7 @@ describe Ppl::Command::Mutt do
|
|
108
109
|
|
109
110
|
before(:each) do
|
110
111
|
@input.options[:ignore_case] = true
|
111
|
-
@contact.name = "Joe Schmoe"
|
112
|
+
@contact.name.full = "Joe Schmoe"
|
112
113
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("joe@somewhere.com")
|
113
114
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("LOUD@SHOUTING.COM")
|
114
115
|
@address_book.contacts << @contact
|
@@ -9,15 +9,18 @@ describe Ppl::Command::Name do
|
|
9
9
|
|
10
10
|
@address_book = Ppl::Entity::AddressBook.new
|
11
11
|
|
12
|
-
@storage
|
13
|
-
@show_format
|
14
|
-
@list_format
|
12
|
+
@storage = double(Ppl::Adapter::Storage)
|
13
|
+
@show_format = double(Ppl::Format::Contact)
|
14
|
+
@list_format = double(Ppl::Format::Contact)
|
15
|
+
@name_service = double(Ppl::Service::Name)
|
15
16
|
|
16
|
-
@command.storage
|
17
|
-
@command.show_format
|
18
|
-
@command.list_format
|
17
|
+
@command.storage = @storage
|
18
|
+
@command.show_format = @show_format
|
19
|
+
@command.list_format = @list_format
|
20
|
+
@command.name_service = @name_service
|
19
21
|
|
20
22
|
@contact.id = "jim"
|
23
|
+
@contact.name = Ppl::Entity::Name.new
|
21
24
|
end
|
22
25
|
|
23
26
|
describe "#name" do
|
@@ -53,13 +56,25 @@ describe Ppl::Command::Name do
|
|
53
56
|
|
54
57
|
it "should change the contact's name if a name is given" do
|
55
58
|
@storage.should_receive(:require_contact).and_return(@contact)
|
56
|
-
@
|
57
|
-
|
58
|
-
|
59
|
+
@name_service.should_receive(:update).with(@contact.name, {
|
60
|
+
:full => "Jim Jamieson"
|
61
|
+
})
|
62
|
+
@storage.should_receive(:save_contact)
|
59
63
|
@input.arguments = ["jim", "Jim Jamieson"]
|
60
64
|
@command.execute(@input, @output)
|
61
65
|
end
|
62
66
|
|
67
|
+
it "should change the contact's name if a name is given" do
|
68
|
+
@storage.should_receive(:require_contact).and_return(@contact)
|
69
|
+
@name_service.should_receive(:update).with(@contact.name, {
|
70
|
+
:family => "Smith"
|
71
|
+
})
|
72
|
+
@storage.should_receive(:save_contact)
|
73
|
+
@input.arguments = ["jim"]
|
74
|
+
@input.options = { :family => "Smith" }
|
75
|
+
@command.execute(@input, @output)
|
76
|
+
end
|
77
|
+
|
63
78
|
end
|
64
79
|
|
65
80
|
end
|
@@ -23,18 +23,21 @@ describe Ppl::Format::Contact::Full do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should start with the contact's name" do
|
26
|
-
@contact.name =
|
26
|
+
@contact.name = Ppl::Entity::Name.new
|
27
|
+
@contact.name.full = "John Doe"
|
27
28
|
@format.process(@contact).should eq "John Doe"
|
28
29
|
end
|
29
30
|
|
30
31
|
it "should include their email address in brackets" do
|
31
|
-
@contact.name =
|
32
|
+
@contact.name = Ppl::Entity::Name.new
|
33
|
+
@contact.name.full = "John Doe"
|
32
34
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("john@example.org")
|
33
35
|
@format.process(@contact).should include "John Doe <john@example.org>"
|
34
36
|
end
|
35
37
|
|
36
38
|
it "should include their preferred email address in brackets" do
|
37
|
-
@contact.name =
|
39
|
+
@contact.name = Ppl::Entity::Name.new
|
40
|
+
@contact.name.full = "John Doe"
|
38
41
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("john@example.org")
|
39
42
|
@contact.email_addresses << Ppl::Entity::EmailAddress.new("fred@testtest.es")
|
40
43
|
@contact.email_addresses[1].preferred = true
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
describe Ppl::Format::Name::FullOnly do
|
3
|
+
|
4
|
+
before(:each) do
|
5
|
+
@format = Ppl::Format::Name::FullOnly.new
|
6
|
+
@name = Ppl::Entity::Name.new
|
7
|
+
@color = double(Ppl::Adapter::Color)
|
8
|
+
@format.color_adapter = @color
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#process" do
|
12
|
+
|
13
|
+
it "should return an empty string if the contact lacks a name" do
|
14
|
+
@format.process(@name).should eq ""
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return just the full name" do
|
18
|
+
@name.full = "John Doe"
|
19
|
+
@format.process(@name).should eq "John Doe"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should colorize the string if configured to do so" do
|
23
|
+
@format.colors = { "name" => "blue" }
|
24
|
+
@color.should_receive(:colorize).and_return("name in blue")
|
25
|
+
@format.process(@name).should eq "name in blue"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
describe Ppl::Format::Name do
|
3
|
+
|
4
|
+
before(:each) do
|
5
|
+
@format = Ppl::Format::Name.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#process" do
|
9
|
+
|
10
|
+
it "should raise a NotImplementedError" do
|
11
|
+
expect{@format.process(nil)}.to raise_error(NotImplementedError)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
|
2
|
+
describe Ppl::Service::Name do
|
3
|
+
|
4
|
+
before(:each) do
|
5
|
+
@service = Ppl::Service::Name.new
|
6
|
+
@name = Ppl::Entity::Name.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#parse" do
|
10
|
+
|
11
|
+
it "uses the whole string for the full name" do
|
12
|
+
@service.parse("John Smith").full.should eq "John Smith"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "uses the first word for the given name" do
|
16
|
+
@service.parse("John Smith").given.should eq "John"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "uses the rest of the string for the family names" do
|
20
|
+
@service.parse("John Fitzgerald Donald Smith").family.should eq "Fitzgerald Donald Smith"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#update" do
|
26
|
+
|
27
|
+
it "updates the full name" do
|
28
|
+
@service.update(@name, {:full => "Abc Def"})
|
29
|
+
@name.full.should eq "Abc Def"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "updates the given names" do
|
33
|
+
@service.update(@name, {:given => "John"})
|
34
|
+
@name.given.should eq "John"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "updates the family names" do
|
38
|
+
@service.update(@name, {:family => "Smith"})
|
39
|
+
@name.family.should eq "Smith"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "updates the middle names" do
|
43
|
+
@service.update(@name, {:middle => "Arnold"})
|
44
|
+
@name.middle.should eq "Arnold"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "updates the name prefix" do
|
48
|
+
@service.update(@name, {:prefix => "Mr"})
|
49
|
+
@name.prefix.should eq "Mr"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "updates the name suffix" do
|
53
|
+
@service.update(@name, {:suffix => "BSc"})
|
54
|
+
@name.suffix.should eq "BSc"
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ppl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henry Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored
|
@@ -229,6 +229,7 @@ files:
|
|
229
229
|
- lib/ppl/entity/address_book.rb
|
230
230
|
- lib/ppl/entity/contact.rb
|
231
231
|
- lib/ppl/entity/email_address.rb
|
232
|
+
- lib/ppl/entity/name.rb
|
232
233
|
- lib/ppl/entity/phone_number.rb
|
233
234
|
- lib/ppl/entity/postal_address.rb
|
234
235
|
- lib/ppl/error/completion_not_found.rb
|
@@ -252,7 +253,6 @@ files:
|
|
252
253
|
- lib/ppl/format/contact/birthday.rb
|
253
254
|
- lib/ppl/format/contact/email_addresses.rb
|
254
255
|
- lib/ppl/format/contact/full.rb
|
255
|
-
- lib/ppl/format/contact/name.rb
|
256
256
|
- lib/ppl/format/contact/nicknames.rb
|
257
257
|
- lib/ppl/format/contact/organization.rb
|
258
258
|
- lib/ppl/format/contact/phone_number.rb
|
@@ -263,11 +263,14 @@ files:
|
|
263
263
|
- lib/ppl/format/custom/contact.rb
|
264
264
|
- lib/ppl/format/custom/email_address.rb
|
265
265
|
- lib/ppl/format/custom/phone_number.rb
|
266
|
+
- lib/ppl/format/name.rb
|
267
|
+
- lib/ppl/format/name/full_only.rb
|
266
268
|
- lib/ppl/format/postal_address.rb
|
267
269
|
- lib/ppl/format/postal_address/multi_line.rb
|
268
270
|
- lib/ppl/format/postal_address/one_line.rb
|
269
271
|
- lib/ppl/format/table.rb
|
270
272
|
- lib/ppl/service/email_address.rb
|
273
|
+
- lib/ppl/service/name.rb
|
271
274
|
- lib/ppl/service/phone_number.rb
|
272
275
|
- lib/ppl/service/postal_address.rb
|
273
276
|
- ppl.gemspec
|
@@ -315,6 +318,7 @@ files:
|
|
315
318
|
- spec/ppl/entity/address_book_spec.rb
|
316
319
|
- spec/ppl/entity/contact_spec.rb
|
317
320
|
- spec/ppl/entity/email_address_spec.rb
|
321
|
+
- spec/ppl/entity/name_spec.rb
|
318
322
|
- spec/ppl/entity/phone_number_spec.rb
|
319
323
|
- spec/ppl/entity/postal_address_spec.rb
|
320
324
|
- spec/ppl/format/address_book/ages_spec.rb
|
@@ -333,7 +337,6 @@ files:
|
|
333
337
|
- spec/ppl/format/contact/birthday_spec.rb
|
334
338
|
- spec/ppl/format/contact/email_addresses_spec.rb
|
335
339
|
- spec/ppl/format/contact/full_spec.rb
|
336
|
-
- spec/ppl/format/contact/name_spec.rb
|
337
340
|
- spec/ppl/format/contact/nicknames_spec.rb
|
338
341
|
- spec/ppl/format/contact/organization_spec.rb
|
339
342
|
- spec/ppl/format/contact/phone_number_spec.rb
|
@@ -345,11 +348,14 @@ files:
|
|
345
348
|
- spec/ppl/format/custom/email_address_spec.rb
|
346
349
|
- spec/ppl/format/custom/phone_number_spec.rb
|
347
350
|
- spec/ppl/format/custom_spec.rb
|
351
|
+
- spec/ppl/format/name/full_only_spec.rb
|
352
|
+
- spec/ppl/format/name_spec.rb
|
348
353
|
- spec/ppl/format/postal_address/multi_line_spec.rb
|
349
354
|
- spec/ppl/format/postal_address/one_line_spec.rb
|
350
355
|
- spec/ppl/format/postal_address_spec.rb
|
351
356
|
- spec/ppl/format/table_spec.rb
|
352
357
|
- spec/ppl/service/email_address_spec.rb
|
358
|
+
- spec/ppl/service/name_spec.rb
|
353
359
|
- spec/ppl/service/phone_number_spec.rb
|
354
360
|
- spec/ppl/service/postal_address_spec.rb
|
355
361
|
- spec/spec_helper.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
|
2
|
-
describe Ppl::Format::Contact::Name do
|
3
|
-
|
4
|
-
before(:each) do
|
5
|
-
@format = Ppl::Format::Contact::Name.new
|
6
|
-
@contact = Ppl::Entity::Contact.new
|
7
|
-
@color = double(Ppl::Adapter::Color)
|
8
|
-
@format.color_adapter = @color
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#process" do
|
12
|
-
|
13
|
-
it "should return an empty string if the contact lacks a name" do
|
14
|
-
@format.process(Ppl::Entity::Contact.new).should eq ""
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should return the contact's name if it is set" do
|
18
|
-
@contact.name = "John Doe"
|
19
|
-
@format.process(@contact).should eq "John Doe"
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should colorize the string if configured to do so" do
|
23
|
-
@format.colors = { "name" => "blue" }
|
24
|
-
@color.should_receive(:colorize).and_return("name in blue")
|
25
|
-
@format.process(@contact).should eq "name in blue"
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|