Crates.io | rcue |
lib.rs | rcue |
version | 0.1.3 |
source | src |
created_at | 2022-04-13 13:31:55.22238 |
updated_at | 2022-04-13 18:31:34.45297 |
description | Simple CUE sheet reader |
homepage | |
repository | https://github.com/gyng/rcue |
max_upload_size | |
id | 566988 |
size | 50,648 |
Simple CUE sheet reader for Rust. Has no dependencies and compiles on stable.
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()));
}
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 "
.
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
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
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