Skip to main content

PatchFormatter

Struct PatchFormatter 

Source
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

Source

pub fn new() -> Self

Construct a new formatter

Examples found in repository?
examples/patch_formatter.rs (line 13)
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}
Source

pub fn with_color(self) -> Self

Available on crate feature color only.

Enable formatting a patch with color

Examples found in repository?
examples/patch_formatter.rs (line 17)
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}
Source

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?
examples/patch_formatter.rs (line 13)
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}
Source

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.

Source

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?
examples/patch_formatter.rs (line 15)
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}
Source

pub fn write_patch_into<T: ToOwned + AsRef<[u8]> + ?Sized, W: Write>( &self, patch: &Patch<'_, T>, w: W, ) -> Result<()>

Available on crate feature 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.

Trait Implementations§

Source§

impl Debug for PatchFormatter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PatchFormatter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.