#cli-file #file-format #format #3d #file #cli #fs-file

colain

A parser for the Common Layer Interface format (.cli)

1 unstable release

0.1.4 Jan 29, 2022
0.1.3 May 14, 2021
0.1.2 May 14, 2021
0.1.1 Mar 25, 2021
0.1.0 Mar 25, 2021

#1690 in Parser implementations

Apache-2.0

28KB
463 lines

colain

Crates.io Documentation

Parser for the Common Layer Interface (.cli) file format.

Note: This library does not yet parse ASCII files.

Requires rustc 1.51.0+

Example

use std::fs::File;
use std::io::prelude::*;
use colain::{
    CLI,
    clitype::{LongCLI, ShortCLI},
    Point // import the Point trait to provide access via .x() and .y()
};

// Load the file
let mut buf: Vec<u8> = Vec::new();
File::open("example.cli").unwrap().read_to_end(&mut buf).unwrap();

// Parse the file
let model = CLI::<LongCLI>::new(&buf).unwrap();

// for each layer
for layer in model.iter() {
     // for each loop in the layer
     for a_loop in layer.iter_loops() {
         // for each point in the loop
         for point in a_loop.iter() {
             let x = point.x();
             let y = point.y();
         }
     }
 }

Licence

Licensed under Apache 2.0

Contributing

Please feel free to submit a PR.

Additionally, .cli files would be very useful for testing, please consider submitting any files to the testfiles directory as a PR.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Todo

  • Switch to Iterator API
  • Support remaining header commands
  • Tests
  • PR for ASCII file support is welcome

Dependencies

~165KB