# liberty-parser
> A maintained fork of [liberty-parse](https://github.com/shages/liberty-parse) by Erik Ronshagen.
Liberty file format parser for Rust
## Example usage
Parse libraries from a Liberty file
```rust
use liberty_parser::parse_lib;
let lib_str = r#"
library(sample) {
cell(AND2) {
area: 1;
}
}
"#;
for lib in parse_lib(lib_str).unwrap() {
println!("Library '{}' has {} cells", lib.name, lib.iter_cells().count());
let area = lib
.get_cell("AND2")
.and_then(|c| c.simple_attribute("area"))
.map_or(-1.0, |v| v.float());
println!("Cell AND2 has area: {}", area);
}
```
## Limitations
- Doesn't automatically parse files from `include` statements
- Doesn't parse bus syntax in pin names. For example:
```
pin (X[0:3]){
}
```
## Credits / Acknowledgements
Originally created by [Erik Ronshagen](https://github.com/shages/liberty-parse).
Now a maintained fork by Marcos Sartori. MIT-licensed; see [NOTICE.md](NOTICE.md)
for full attribution details.