pub struct PatchFormatter { /* private fields */ }Expand description
Formats patches for display or writing into byte streams.
§Examples
use diffy::PatchFormatter;
use diffy::create_patch;
let patch = create_patch("alpha\nbeta\n", "ALPHA\nbeta\n");
let formatter = PatchFormatter::new().missing_newline_message(false);
let mut output = Vec::new();
formatter.write_patch_into(&patch, &mut output).unwrap();
assert_eq!(
String::from_utf8(output).unwrap(),
"\
--- original
+++ modified
@@ -1,2 +1,2 @@
-alpha
+ALPHA
beta
",
);Implementations§
Source§impl PatchFormatter
impl PatchFormatter
Sourcepub fn new() -> Self
pub fn new() -> Self
Construct a new formatter
Examples found in repository?
4fn main() {
5 let original = "first line\nlast line";
6 let modified = "first line\nmodified last line";
7
8 let patch = create_patch(original, modified);
9
10 println!("PatchFormatter::Default");
11 println!("{patch}");
12
13 let formatter = PatchFormatter::new().missing_newline_message(false);
14 println!("{formatter:?}");
15 println!("{}", formatter.fmt_patch(&patch));
16
17 let formatter = PatchFormatter::new().with_color();
18 println!("{formatter:?}");
19 println!("{}", formatter.fmt_patch(&patch));
20
21 let formatter = PatchFormatter::new()
22 .with_color()
23 .missing_newline_message(false);
24 println!("{formatter:?}");
25 println!("{}", formatter.fmt_patch(&patch));
26}Sourcepub fn with_color(self) -> Self
Available on crate feature color only.
pub fn with_color(self) -> Self
color only.Enable formatting a patch with color
Examples found in repository?
4fn main() {
5 let original = "first line\nlast line";
6 let modified = "first line\nmodified last line";
7
8 let patch = create_patch(original, modified);
9
10 println!("PatchFormatter::Default");
11 println!("{patch}");
12
13 let formatter = PatchFormatter::new().missing_newline_message(false);
14 println!("{formatter:?}");
15 println!("{}", formatter.fmt_patch(&patch));
16
17 let formatter = PatchFormatter::new().with_color();
18 println!("{formatter:?}");
19 println!("{}", formatter.fmt_patch(&patch));
20
21 let formatter = PatchFormatter::new()
22 .with_color()
23 .missing_newline_message(false);
24 println!("{formatter:?}");
25 println!("{}", formatter.fmt_patch(&patch));
26}Sourcepub fn missing_newline_message(self, enable: bool) -> Self
pub fn missing_newline_message(self, enable: bool) -> Self
Sets whether to format a patch with a “No newline at end of file” message.
Default is true.
Note: If this is disabled by setting to false, formatted patches will no longer contain
sufficient information to determine if a file ended with a newline character (\n) or not
and the patch will be formatted as if both the original and modified files ended with a
newline character (\n).
Examples found in repository?
4fn main() {
5 let original = "first line\nlast line";
6 let modified = "first line\nmodified last line";
7
8 let patch = create_patch(original, modified);
9
10 println!("PatchFormatter::Default");
11 println!("{patch}");
12
13 let formatter = PatchFormatter::new().missing_newline_message(false);
14 println!("{formatter:?}");
15 println!("{}", formatter.fmt_patch(&patch));
16
17 let formatter = PatchFormatter::new().with_color();
18 println!("{formatter:?}");
19 println!("{}", formatter.fmt_patch(&patch));
20
21 let formatter = PatchFormatter::new()
22 .with_color()
23 .missing_newline_message(false);
24 println!("{formatter:?}");
25 println!("{}", formatter.fmt_patch(&patch));
26}Sourcepub fn suppress_blank_empty(self, enable: bool) -> Self
pub fn suppress_blank_empty(self, enable: bool) -> Self
Sets whether to suppress printing of a space before empty lines.
Defaults to true.
For more information you can refer to the Omitting trailing blanks manual page of GNU
diff or the diff.suppressBlankEmpty config for git-diff.
Sourcepub fn fmt_patch<'a>(&'a self, patch: &'a Patch<'a, str>) -> impl Display + 'a
pub fn fmt_patch<'a>(&'a self, patch: &'a Patch<'a, str>) -> impl Display + 'a
Returns a Display impl which can be used to print a Patch
Examples found in repository?
4fn main() {
5 let original = "first line\nlast line";
6 let modified = "first line\nmodified last line";
7
8 let patch = create_patch(original, modified);
9
10 println!("PatchFormatter::Default");
11 println!("{patch}");
12
13 let formatter = PatchFormatter::new().missing_newline_message(false);
14 println!("{formatter:?}");
15 println!("{}", formatter.fmt_patch(&patch));
16
17 let formatter = PatchFormatter::new().with_color();
18 println!("{formatter:?}");
19 println!("{}", formatter.fmt_patch(&patch));
20
21 let formatter = PatchFormatter::new()
22 .with_color()
23 .missing_newline_message(false);
24 println!("{formatter:?}");
25 println!("{}", formatter.fmt_patch(&patch));
26}Sourcepub fn write_patch_into<T: ToOwned + AsRef<[u8]> + ?Sized, W: Write>(
&self,
patch: &Patch<'_, T>,
w: W,
) -> Result<()>
Available on crate feature std only.
pub fn write_patch_into<T: ToOwned + AsRef<[u8]> + ?Sized, W: Write>( &self, patch: &Patch<'_, T>, w: W, ) -> Result<()>
std only.Writes a formatted patch into a writer.
This is the byte-oriented equivalent of fmt_patch
for callers that want to stream the formatted patch into an io::Write
sink instead of going through Display.