extern crate rolodex; use rolodex::*; use std::io::Read; use std::fs::File; use std::env::args; fn print_help_message() { println!("Parse VCard Example:\n\tvalidate files...\n") } fn panic_error(input: &str, err: nom::Err) { match err { nom::Err::Incomplete(size) => panic!("Expected More Data: {:?}", size), nom::Err::Failure(err) => panic!("{}", err.display(input)), nom::Err::Error(err) => panic!("{}", err.display(input)) } } fn main() { let args: Vec = args().collect(); if args.len() > 1 { for arg in &args[1..] { let mut file = File::open(arg).expect(&format!("Failed to open `{}`", arg)); let mut raw_data = vec![]; file.read_to_end(&mut raw_data).expect(&format!("Failed to read file `{}`", arg)); let data = String::from_utf8_lossy(&raw_data); match Vcf::parse(&data) { Err(err) => panic_error(&data, err), Ok((_, item)) => println!("== VCard Count {} ==\n{}", item.0.len(), item) } } } else { print_help_message() } }