9 releases
0.1.8 | Jul 29, 2024 |
---|---|
0.1.7 | Jul 7, 2024 |
0.1.2 | Nov 28, 2023 |
#5 in #unified
3,194 downloads per month
Used in 9 crates
(3 directly)
75KB
1.5K
SLoC
Parsing and manipulation of patch files
This crate provides support for parsing and editing of unified diff files, as well as related files (e.g. quilt).
lib.rs
:
A crate for parsing and manipulating patches.
Examples
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");
Dependencies
~3.5–5MB
~91K SLoC