9个版本
0.1.8 | 2024年7月29日 |
---|---|
0.1.7 | 2024年7月7日 |
0.1.2 | 2023年11月28日 |
#2 在 #quilt
6,980 每月下载量
在 7 个 crate 中使用(3 个直接使用)
75KB
1.5K SLoC
解析和操作补丁文件
本crate提供对统一diff文件及其相关文件(例如quilt)的解析和编辑支持。
lib.rs
:
用于解析和操作补丁的crate。
示例
use patchkit::parse::parse_patch;
use patchkit::patch::{Patch as _, UnifiedPatch, Hunk, HunkLine};
let patch = UnifiedPatch::parse_patch(vec![
"--- a/file1\n",
"+++ b/file1\n",
"@@ -1,1 +1,1 @@\n",
"-a\n",
"+b\n",
].into_iter().map(|s| s.as_bytes())).unwrap();
assert_eq!(patch, UnifiedPatch {
orig_name: b"a/file1".to_vec(),
mod_name: b"b/file1".to_vec(),
orig_ts: None,
mod_ts: None,
hunks: vec![
Hunk {
mod_pos: 1,
mod_range: 1,
orig_pos: 1,
orig_range: 1,
lines: vec![
HunkLine::RemoveLine(b"a\n".to_vec()),
HunkLine::InsertLine(b"b\n".to_vec()),
],
tail: None
},
],
});
let applied = patch.apply_exact(&b"a\n"[..]).unwrap();
assert_eq!(applied, b"b\n");
依赖
~3.5–5MB
~89K SLoC