rcue 0.1.3

Simple CUE sheet reader
Documentation
  • Coverage
  • 100%
    62 out of 62 items documented8 out of 16 items with examples
  • Size
  • Source code size: 50.64 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 922.8 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 8s Average build duration of successful builds.
  • all releases: 8s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • gyng/rcue
    5 2 2
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • gyng

rcue

crates.io

Documentation

Simple CUE sheet reader for Rust. Has no dependencies and compiles on stable.

Usage

See generated documentation or tests in parser.rs for usage and some examples.

Add this to your Cargo.toml under [dependencies]

via crates.io

rcue = "*"

or from GitHub directly

rcue = { git = "https://github.com/gyng/rcue" }

In your program:

extern crate rcue;

use rcue::parser::parse;
use rcue::parser::parse_from_file;

fn main() {
    let cue = parse_from_file("test/fixtures/unicode.cue", true).unwrap();
    assert_eq!(cue.title, Some("マジコカタストロフィ".to_string()));

    let file = std::fs::File::open("test/fixtures/unicode.cue").unwrap();
    let mut buf_reader = std::io::BufReader::new(file);
    let cue = parse(&mut buf_reader, true).unwrap();
    assert_eq!(cue.title, Some("マジコカタストロフィ".to_string()));
}

Limitations and notes

The current implementation has the following known limitations:

  • Indentation is treated as insignificant (= no proper contextual support). For example, if REM fields appear after a TRACK field (but are indented to the FILE's level, it will be wrongly assigned to the TRACK instead.

    FILE "audio.wav" WAVE
        TRACK 01 AUDIO
            TITLE "track1"
    REM DISCID 860B640B ← This is wrongly(?) assigned to the TRACK
    
  • Extraneous whitespace between fields causes parsing to fail.

    REM COMMENT           "A lot of extra spaces"
    
  • Escaped double quotation marks in strings \" are escaped into ".

Development

Verbose log information

For verbose logging to STDOUT and details on skipped lines in lenient mode, run rcue with the environment variable RCUE_LOG set to 1. For example:

# myapp.rs
RCUE_LOG=1 cargo run

Fuzzing

The parser fuzz test for rcue can be run using cargo fuzz in nightly.

cargo install cargo-fuzz -f
cargo +nightly fuzz run fuzz_parser

Clippy

Run clippy using

rustup install nightly # if not installed
rustup update nightly
cargo +nightly install clippy --force # --force to update
rustup run nightly cargo clippy

TODO

  • Significant indentation/context support
  • Serializer
  • Clean up parsing even more