1个不稳定发布
0.1.0 | 2024年6月21日 |
---|
#1694 in 解析实现
42KB
650 行
Rust MSDParser
这是Garcia(https://github.com/garcia/msdparser/)编写的MSD解析器库的Rust移植版。该库公开了与Python原始版本类似的API,即parse_msd
函数。
fn parse_msd<R: Read>(input: R, escapes: bool, ignore_stray_text: bool) -> MSDParser<R>;
返回的结构是一个迭代器,它产生Result<MSDParameter, MSDParserError>
,其中MSDParameter
是一个键值对。可以通过使用.key()
和.value()
分别访问键和值。
请参见下面的示例以了解其工作原理。
用法
use msdparser::{MSDParameter, parse_msd};
use std::error::Error;
use std::vec::Vec;
let example_input = b"\
#VERSION:0.83;
#TITLE:Springtime;
#SUBTITLE:;
#ARTIST:Kommisar;";
let mut result: Vec<MSDParameter> = Vec::new();
// here we set `escapes` to true and `ignore_stray_text` to false
// which is the default value in the original python library
for parameter in parse_msd(example_input.as_ref(), true, false) {
match parameter {
Ok(parameter) => result.push(parameter),
Err(e) => panic!("{}", e), // = MSDParserError
}
}
assert_eq!(result.len(), 4);
assert_eq!(result[0].key().unwrap(), "VERSION".to_string());
assert_eq!(result[1].value().unwrap(), "Springtime".to_string());
assert_eq!(result[2].value().unwrap(), "".to_string());
assert_eq!(result[3].key().unwrap(), "ARTIST".to_string());
安装
- 将以下内容添加到您的
Cargo.toml
[dependencies]
msdparser = { version = "0.1.0", git = "https://github.com/smdbs01/rust_msdparser.git" }
或者
- 使用
Cargo add msdparser
。
贡献
这是我使用Rust的第一个项目,所以代码库可能还不够“Rustify”。因此,如果您发现任何错误或建议,请随时提出问题或PR。
依赖
~2.2–3MB
~54K SLoC