-
Notifications
You must be signed in to change notification settings - Fork 18
/
full.rb
84 lines (67 loc) · 1.83 KB
/
full.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
class Ppl::Format::Contact::Full < Ppl::Format::Contact
attr_writer :postal_address_format
def initialize
@postal_address_format = Ppl::Format::PostalAddress::OneLine.new
end
def process(contact)
@lines = []
first_line = first_line(contact)
if first_line != ""
@lines.push(first_line)
end
vitals = vitals(contact)
if vitals != ""
@lines.push("")
@lines.push(vitals)
end
format_email_addresses(contact)
format_phone_numbers(contact)
format_postal_addresses(contact)
return @lines.join("\n")
end
private
def first_line(contact)
line = ""
if !contact.name.nil?
line += contact.name
end
if !contact.email_addresses.empty?
line += " <#{contact.email_addresses.first}>"
end
return line
end
def vitals(contact)
vitals = []
if !contact.birthday.nil?
vitals.push(format_vital("Birthday", contact.birthday.strftime("%Y-%m-%d")))
end
if !contact.organization.nil?
vitals.push(format_vital("Organization", contact.organization))
end
return vitals.join("\n")
end
def format_vital(name, value)
return sprintf(" %-12s %s", name, value)
end
def format_email_addresses(contact)
if !contact.email_addresses.empty?
@lines.push("")
@lines.push("Email Addresses:")
contact.email_addresses.each { |email_address| @lines.push(" " + email_address) }
end
end
def format_phone_numbers(contact)
if !contact.phone_number.nil?
@lines.push("")
@lines.push("Phone Numbers:")
@lines.push(" #{contact.phone_number}")
end
end
def format_postal_addresses(contact)
if !contact.postal_address.nil?
@lines.push("")
@lines.push("Postal Address:")
@lines.push(" " + @postal_address_format.process(contact.postal_address))
end
end
end