9个版本

0.1.8 2024年7月29日
0.1.7 2024年7月7日
0.1.2 2023年11月28日

#2#quilt

Download history 131/week @ 2024-04-24 260/week @ 2024-05-01 224/week @ 2024-05-08 177/week @ 2024-05-15 130/week @ 2024-05-22 217/week @ 2024-05-29 568/week @ 2024-06-05 785/week @ 2024-06-12 341/week @ 2024-06-19 560/week @ 2024-06-26 1118/week @ 2024-07-03 886/week @ 2024-07-10 553/week @ 2024-07-17 1818/week @ 2024-07-24 1995/week @ 2024-07-31 2507/week @ 2024-08-07

6,980 每月下载量
7 crate 中使用(3 个直接使用)

Apache-2.0

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