#debian #watch #parser #node

debian-watch

Debian watch 文件解析器

9 个版本

0.2.7 2024 年 3 月 9 日
0.2.6 2024 年 3 月 9 日
0.2.5 2023 年 10 月 3 日
0.2.1 2023 年 9 月 16 日
0.1.0 2023 年 6 月 3 日

#312 in Unix APIs

Download history 160/week @ 2024-04-23 362/week @ 2024-04-30 277/week @ 2024-05-07 391/week @ 2024-05-14 246/week @ 2024-05-21 746/week @ 2024-05-28 555/week @ 2024-06-04 318/week @ 2024-06-11 287/week @ 2024-06-18 475/week @ 2024-06-25 400/week @ 2024-07-02 349/week @ 2024-07-09 304/week @ 2024-07-16 784/week @ 2024-07-23 491/week @ 2024-07-30 565/week @ 2024-08-06

2,383 每月下载量
用于 upstream-ontologist

Apache-2.0 许可

48KB
1.5K SLoC

Debian watch 文件的格式保持解析器和编辑器

此crate支持读取、编辑和写入Debian watch文件,同时保留原始内容字节的完整性。

示例

let wf = debian_watch::WatchFile::new(None);
assert_eq!(wf.version(), debian_watch::DEFAULT_VERSION);
assert_eq!("", wf.to_string());

let wf = debian_watch::WatchFile::new(Some(4));
assert_eq!(wf.version(), 4);
assert_eq!("version=4\n", wf.to_string());

let wf: debian_watch::WatchFile = r#"version=4
opts=foo=blah https://foo.com/bar .*/v?(\d\S+)\.tar\.gz
"#.parse().unwrap();

assert_eq!(wf.version(), 4);
assert_eq!(wf.entries().collect::<Vec<_>>().len(), 1);

let entry = wf.entries().next().unwrap();
assert_eq!(entry.opts(), maplit::hashmap! {
   "foo".to_string() => "blah".to_string(),
});
assert_eq!(&entry.url(), "https://foo.com/bar");
assert_eq!(entry.matching_pattern().as_deref(), Some(".*/v?(\\d\\S+)\\.tar\\.gz"));

它还支持部分解析(带有一些错误节点),这可能对例如IDE非常有用。

依赖关系

~4–6MB
~133K SLoC