4 个版本
0.4.0 | 2022年7月16日 |
---|---|
0.3.2 | 2022年1月30日 |
0.3.1 | 2022年1月30日 |
0.3.0 | 2022年1月30日 |
#1542 in 解析器实现
50KB
973 行
bibparser
一个用于解析 BibTeX 和 BibLaTeX 文件的 Rust 包。
与 biblatex
包不同,这个包不尝试解析字段的内容。这个包源于这样的用例:当文本被截断之前,biblatex
包在没有结束行内数学模式的情况下抛出错误。
谁应该使用它?
任何希望从 ..bib
文件中检索数据的人。
如何使用它?
将以下内容添加到您的 Cargo.toml
[dependencies]
bibparser = "0.4.0"
实例化解析器并遍历项目
use bibparser::Parser;
//let mut p = Parser::from_file("source.bib")?;
let mut p = Parser::from_str(r#"@book{tolkien1937, author = {J. R. R. Tolkien}}"#)?;
for result in p.iter() {
let entry = result?;
println!("type = {}", entry.kind);
println!("id = {}", entry.id);
for (name, data) in entry.fields.iter() {
println!("\t{}\t= {}", name, data);
}
}
如何运行它?
此库附带一个示例
$ cargo run --example cli -- --input refs.bib
您还可以启用 serde-json 支持,以便将数据打印为 JSON
$ cargo run --features serde,serde_json --example cli -- --input refs.bib --json
在此示例中,库将读取文件 refs.bib
,然后仅将具有 ID tolkien1937
的条目打印到 stdout。
源代码在哪里?
在 github 上。
内容的许可证是什么?
变更日志
- 2022-07-16 版本 0.4.0:跳过 @preamble,处理转义字符,更多测试,修复错误传播的解析错误
- 2022-01-30 版本 0.3.2:修复 CLI 示例并添加 JSON 支持
- 2022-01-30 版本 0.3.1:修复文档和 README
- 2022-01-30 版本 0.3.0:初始发布
我在哪里可以要求您修复一个错误?
在 github 上。
已知的错误/限制是什么?
..bib
与 TeX 密切相关,TeX 是一种编程语言,而不是标记语言。因此,只有纯 TeX 引擎才能理解内容(特别是字段的数据内容)。此库明确地采取将内容假设为标记语言的方法,希望这适用于 99% 的所有用例。- 此库解析的标记语言没有正式化。
- 与 BibTeX 或 biblatex 的兼容性没有进行全面测试。
依赖关系
~3MB
~64K SLoC