libertyparse 0.3.0

Liberty cell library parser
Documentation
use libertyparse::Liberty;
use std::env;
use std::fs;

fn main() {
    clilog::init_stderr_color_debug();
    let args: Vec<String> = env::args().collect();
    assert!(args.len() == 2,
            "Usage: {} <liberty_path>", args[0]);

    let liberty = fs::read_to_string(&args[1])
        .expect("Error reading liberty source file");

    let lib = match Liberty::parse_str(&liberty) {
        Ok(lib) => lib,
        Err(e) => panic!("Parse error: {}", e)
    };

    clilog::info!("Liberty file {}", args[1]);
    lib.debug_report_unparsed();
    clilog::info!("{} libs: {:?}",
                  lib.libs.len(),
                  lib.libs.iter().map(|(name, _)| name.as_ref())
                  .collect::<Vec<&str>>());
    clilog::info!("total #cells: {}",
                  lib.libs.iter().map(|(_, l)| l.cells.len())
                  .sum::<usize>());
}