use ezcal::vcard::Contact;
fn main() {
let vcf_content = "\
BEGIN:VCARD\r\n\
VERSION:4.0\r\n\
UID:urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479\r\n\
FN:Jane Doe\r\n\
N:Doe;Jane;;Dr.;\r\n\
EMAIL;TYPE=work:jane@acme.com\r\n\
EMAIL;TYPE=home:jane.doe@gmail.com\r\n\
TEL;TYPE=work,voice:+1-555-0123\r\n\
ORG:Acme Corp\r\n\
TITLE:Software Engineer\r\n\
ADR;TYPE=work:;;123 Main St;San Francisco;CA;94105;USA\r\n\
NOTE:Met at RustConf 2025\r\n\
URL:https://jane.example.com\r\n\
BDAY:19900115\r\n\
END:VCARD\r\n\
BEGIN:VCARD\r\n\
VERSION:4.0\r\n\
UID:urn:uuid:a1b2c3d4-e5f6-7890-abcd-ef0123456789\r\n\
FN:Bob Smith\r\n\
N:Smith;Bob;;;\r\n\
EMAIL:bob@example.com\r\n\
TEL:+1-555-9876\r\n\
ORG:Example Inc.\r\n\
END:VCARD\r\n";
let contacts = Contact::parse_all(vcf_content).unwrap();
println!("Found {} contacts:\n", contacts.len());
for contact in &contacts {
println!("Name: {}", contact.get_full_name().unwrap_or("(unknown)"));
if let Some(name) = contact.get_name() {
println!(" Family: {}, Given: {}", name.family, name.given);
if !name.prefix.is_empty() {
println!(" Prefix: {}", name.prefix);
}
}
if let Some(org) = contact.get_organization() {
println!(" Organization: {}", org);
}
if let Some(title) = contact.get_title() {
println!(" Title: {}", title);
}
for email in contact.get_emails() {
let type_str = if email.types.is_empty() {
String::new()
} else {
format!(" ({})", email.types.join(", "))
};
println!(" Email: {}{}", email.value, type_str);
}
for phone in contact.get_phones() {
let type_str = if phone.types.is_empty() {
String::new()
} else {
format!(" ({})", phone.types.join(", "))
};
println!(" Phone: {}{}", phone.value, type_str);
}
for addr in contact.get_addresses() {
println!(
" Address: {}, {}, {} {} ({})",
addr.address.street,
addr.address.city,
addr.address.region,
addr.address.postal_code,
addr.types.join(", ")
);
}
if let Some(note) = contact.get_note() {
println!(" Note: {}", note);
}
if let Some(url) = contact.get_url() {
println!(" URL: {}", url);
}
if let Some(bday) = contact.get_birthday() {
println!(" Birthday: {}", bday);
}
println!();
}
}