1 package be
.nikiroo
.jvcard
.parsers
;
3 import java
.util
.LinkedList
;
6 import be
.nikiroo
.jvcard
.Card
;
7 import be
.nikiroo
.jvcard
.Contact
;
8 import be
.nikiroo
.jvcard
.Data
;
10 public class AbookParser
{
11 public static List
<Contact
> parse(List
<String
> lines
) {
12 List
<Contact
> contacts
= new LinkedList
<Contact
>();
14 for (String line
: lines
) {
15 List
<Data
> content
= new LinkedList
<Data
>();
17 String tab
[] = line
.split("\t");
20 content
.add(new Data(null, "NICKNAME", tab
[0].trim(), null));
22 content
.add(new Data(null, "FN", tab
[1].trim(), null));
24 content
.add(new Data(null, "EMAIL", tab
[2].trim(), null));
26 content
.add(new Data(null, "X-FCC", tab
[3].trim(), null));
28 content
.add(new Data(null, "NOTE", tab
[4].trim(), null));
30 contacts
.add(new Contact(content
));
37 public static String
toString(Contact contact
, int startingBKey
) {
38 // BKey is not used in pine mode
40 StringBuilder builder
= new StringBuilder();
42 String nick
= contact
.getPreferredDataValue("NICKNAME");
44 nick
= nick
.replaceAll(" ", "_");
45 nick
= nick
.replaceAll(",", "-");
46 nick
= nick
.replaceAll("@", "(a)");
47 nick
= nick
.replaceAll("\"", "'");
48 nick
= nick
.replaceAll(";", ".");
49 nick
= nick
.replaceAll(":", "=");
50 nick
= nick
.replaceAll("[()\\[\\]<>\\\\]", "/");
57 String fn
= contact
.getPreferredDataValue("FN");
63 String email
= contact
.getPreferredDataValue("EMAIL");
65 builder
.append(email
);
67 // optional fields follow:
69 String xfcc
= contact
.getPreferredDataValue("X-FCC");
75 String notes
= contact
.getPreferredDataValue("NOTE");
81 builder
.append(notes
);
84 // note: save as pine means normal LN, nor CRLN
87 return builder
.toString();
90 public static String
toString(Card card
) {
91 StringBuilder builder
= new StringBuilder();
93 for (Contact contact
: card
.getContacts()) {
94 builder
.append(toString(contact
, -1));
97 return builder
.toString();