12 releases
0.2.1 | Nov 16, 2024 |
---|---|
0.2.0 | Nov 16, 2024 |
0.1.9 | Nov 16, 2024 |
0.1.8 | Jul 29, 2024 |
0.1.2 | Nov 28, 2023 |
#1121 in Parser implementations
6,156 downloads per month
Used in 9 crates
(3 directly)
285KB
2K
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::ContentPatch;
use patchkit::unified::parse_patch;
use patchkit::unified::{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
~88K SLoC