ppl 1.6.0 → 1.7.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.
data/lib/ppl.rb CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  module Ppl
3
3
 
4
- Version = "1.6.0"
4
+ Version = "1.7.0"
5
5
 
6
6
  module Adapter
7
7
  end
@@ -80,6 +80,8 @@ require "ppl/format/contact/name"
80
80
  require "ppl/format/contact/organization"
81
81
  require "ppl/format/contact/phone_number"
82
82
  require "ppl/format/contact/postal_address"
83
+ require "ppl/format/postal_address"
84
+ require "ppl/format/postal_address/one_line"
83
85
  require "ppl/format/table"
84
86
 
85
87
  class String
@@ -4,31 +4,28 @@ class Ppl::Format::Contact::Full < Ppl::Format::Contact
4
4
  attr_writer :postal_address_format
5
5
 
6
6
  def initialize
7
- @postal_address_format = Ppl::Format::Contact::PostalAddress.new
7
+ @postal_address_format = Ppl::Format::PostalAddress::OneLine.new
8
8
  end
9
9
 
10
10
  def process(contact)
11
- lines = []
11
+ @lines = []
12
12
 
13
13
  first_line = first_line(contact)
14
14
  if first_line != ""
15
- lines.push(first_line)
15
+ @lines.push(first_line)
16
16
  end
17
17
 
18
18
  vitals = vitals(contact)
19
19
  if vitals != ""
20
- lines.push("")
21
- lines.push(vitals)
22
- lines.push("")
23
- lines.push("")
20
+ @lines.push("")
21
+ @lines.push(vitals)
24
22
  end
25
23
 
26
- if !contact.postal_address.nil?
27
- lines.push("Postal Address:")
28
- lines.push(@postal_address_format.process(contact))
29
- end
24
+ format_email_addresses(contact)
25
+ format_phone_numbers(contact)
26
+ format_postal_addresses(contact)
30
27
 
31
- return lines.join("\n")
28
+ return @lines.join("\n")
32
29
  end
33
30
 
34
31
  private
@@ -49,9 +46,6 @@ class Ppl::Format::Contact::Full < Ppl::Format::Contact
49
46
  if !contact.birthday.nil?
50
47
  vitals.push(format_vital("Birthday", contact.birthday.strftime("%Y-%m-%d")))
51
48
  end
52
- if !contact.phone_number.nil?
53
- vitals.push(format_vital("Telephone", contact.phone_number))
54
- end
55
49
  if !contact.organization.nil?
56
50
  vitals.push(format_vital("Organization", contact.organization))
57
51
  end
@@ -62,5 +56,29 @@ class Ppl::Format::Contact::Full < Ppl::Format::Contact
62
56
  return sprintf(" %-12s %s", name, value)
63
57
  end
64
58
 
59
+ def format_email_addresses(contact)
60
+ if !contact.email_addresses.empty?
61
+ @lines.push("")
62
+ @lines.push("Email Addresses:")
63
+ contact.email_addresses.each { |email_address| @lines.push(" " + email_address) }
64
+ end
65
+ end
66
+
67
+ def format_phone_numbers(contact)
68
+ if !contact.phone_number.nil?
69
+ @lines.push("")
70
+ @lines.push("Phone Numbers:")
71
+ @lines.push(" #{contact.phone_number}")
72
+ end
73
+ end
74
+
75
+ def format_postal_addresses(contact)
76
+ if !contact.postal_address.nil?
77
+ @lines.push("")
78
+ @lines.push("Postal Address:")
79
+ @lines.push(" " + @postal_address_format.process(contact.postal_address))
80
+ end
81
+ end
82
+
65
83
  end
66
84
 
@@ -0,0 +1,9 @@
1
+
2
+ class Ppl::Format::PostalAddress
3
+
4
+ def process(postal_address)
5
+ raise NotImplementedError
6
+ end
7
+
8
+ end
9
+
@@ -0,0 +1,18 @@
1
+
2
+ class Ppl::Format::PostalAddress::OneLine < Ppl::Format::AddressBook
3
+
4
+ def process(postal_address)
5
+ pieces = []
6
+
7
+ pieces.push(postal_address.street) unless postal_address.street.nil?
8
+ pieces.push(postal_address.locality) unless postal_address.locality.nil?
9
+ pieces.push(postal_address.region) unless postal_address.region.nil?
10
+ pieces.push(postal_address.country) unless postal_address.country.nil?
11
+ pieces.push(postal_address.postal_code) unless postal_address.postal_code.nil?
12
+ pieces.push(postal_address.po_box) unless postal_address.po_box.nil?
13
+
14
+ pieces.join(", ")
15
+ end
16
+
17
+ end
18
+
data/ppl.gemspec CHANGED
@@ -2,8 +2,8 @@
2
2
  Gem::Specification.new do |spec|
3
3
 
4
4
  spec.name = "ppl"
5
- spec.version = "1.6.0"
6
- spec.date = "2012-12-27"
5
+ spec.version = "1.7.0"
6
+ spec.date = "2012-12-29"
7
7
 
8
8
  spec.required_ruby_version = ">= 1.9.3"
9
9
 
@@ -24,7 +24,16 @@ describe Ppl::Format::Contact::Full do
24
24
  it "should include their email address in brackets" do
25
25
  @contact.name = "John Doe"
26
26
  @contact.email_addresses.push "john@example.org"
27
- @format.process(@contact).should eq "John Doe <john@example.org>"
27
+ @format.process(@contact).should include "John Doe <john@example.org>"
28
+ end
29
+
30
+ it "should show all their email addresses" do
31
+ @contact.email_addresses.push "john@example.org"
32
+ @contact.email_addresses.push "john@example.com"
33
+ @contact.email_addresses.push "john@example.net"
34
+ @format.process(@contact).should include "john@example.org"
35
+ @format.process(@contact).should include "john@example.com"
36
+ @format.process(@contact).should include "john@example.net"
28
37
  end
29
38
 
30
39
  it "should show their birthday if available" do
@@ -44,7 +53,7 @@ describe Ppl::Format::Contact::Full do
44
53
 
45
54
  it "should show their postal address if available" do
46
55
  @contact.postal_address = @address
47
- @postal_address_format.should_receive(:process).with(@contact)
56
+ @postal_address_format.should_receive(:process).and_return("")
48
57
  @format.process(@contact)
49
58
  end
50
59
 
@@ -0,0 +1,44 @@
1
+
2
+ describe Ppl::Format::PostalAddress::OneLine do
3
+
4
+ before(:each) do
5
+ @format = Ppl::Format::PostalAddress::OneLine.new
6
+ @address = Ppl::Entity::PostalAddress.new
7
+ end
8
+
9
+ describe "#process" do
10
+
11
+ it "should include the country if available" do
12
+ @address.country = "UK"
13
+ @format.process(@address).should include "UK"
14
+ end
15
+
16
+ it "should include the locality if available" do
17
+ @address.locality = "Liverpool"
18
+ @format.process(@address).should include "Liverpool"
19
+ end
20
+
21
+ it "should include the street if available" do
22
+ @address.street = "1 Test Road"
23
+ @format.process(@address).should include "1 Test Road"
24
+ end
25
+
26
+ it "should include the po box if available" do
27
+ @address.po_box = "123456"
28
+ @format.process(@address).should include "123456"
29
+ end
30
+
31
+ it "should include the postal code if available" do
32
+ @address.postal_code = "L1 9AA"
33
+ @format.process(@address).should include "L1 9AA"
34
+ end
35
+
36
+ it "should include the region if available" do
37
+ @address.region = "Merseyside"
38
+ @format.process(@address).should include "Merseyside"
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
@@ -0,0 +1,18 @@
1
+
2
+ describe Ppl::Format::PostalAddress do
3
+
4
+ before(:each) do
5
+ @format = Ppl::Format::PostalAddress.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
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ppl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-27 00:00:00.000000000 Z
12
+ date: 2012-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: inifile
16
- requirement: &17793580 !ruby/object:Gem::Requirement
16
+ requirement: &7003600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.0.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *17793580
24
+ version_requirements: *7003600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rugged
27
- requirement: &17792360 !ruby/object:Gem::Requirement
27
+ requirement: &7002340 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.17.0.b6
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *17792360
35
+ version_requirements: *7002340
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: vpim
38
- requirement: &17791520 !ruby/object:Gem::Requirement
38
+ requirement: &7001560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0.695'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *17791520
46
+ version_requirements: *7001560
47
47
  description: CLI Address Book
48
48
  email: henry@henrysmith.org
49
49
  executables:
@@ -111,6 +111,8 @@ files:
111
111
  - lib/ppl/format/contact/organization.rb
112
112
  - lib/ppl/format/contact/phone_number.rb
113
113
  - lib/ppl/format/contact/postal_address.rb
114
+ - lib/ppl/format/postal_address.rb
115
+ - lib/ppl/format/postal_address/one_line.rb
114
116
  - lib/ppl/format/table.rb
115
117
  - ppl.gemspec
116
118
  - spec/ppl/adapter/output_spec.rb
@@ -162,6 +164,8 @@ files:
162
164
  - spec/ppl/format/contact/phone_number_spec.rb
163
165
  - spec/ppl/format/contact/postal_address_spec.rb
164
166
  - spec/ppl/format/contact_spec.rb
167
+ - spec/ppl/format/postal_address/one_line_spec.rb
168
+ - spec/ppl/format/postal_address_spec.rb
165
169
  - spec/ppl/format/table_spec.rb
166
170
  - spec/spec_helper.rb
167
171
  homepage: http://ppladdressbook.org