Colorized string diff ideal for text/code that spans through multiple lines
npm install disparityColorized string diff ideal for text/code that spans through multiple lines.
This is basically just a wrapper around
diff and
ansi-styles + line numbers and
omitting lines that don't have changes and/or that wouldn't help user identify
the diff "context".
We also replace some invisible chars to make it easier to understand what
really changed from one file to another:
- \r becomes
- \n becomes
- \t becomes
Created mainly to be used by
esformatter and other tools that
might need to display a nice looking diff of source files.
``js`
var disparity = require('disparity');
Diffs two blocks of text, comparing character by character and returns
a String with ansi color codes.
`js`
var diff = disparity.chars(file1, file2);
console.log(diff);
Will return an empty string if oldStr === newStr;
`js`
// default options
var opts = {
// how many lines to display before/after a line that contains diffs
context: 3,
// file paths displayed just before the diff
paths: [disparity.removed, disparity.added]
};
Returns ansi colorized unified
diff.
Will return an empty string if oldStr === newStr;
`js`
var diff = disparity.unified(file1, file2, {
paths: ['test/file1.js', 'test/file2.js']
});
console.log(diff);
Returns unified diff.
Useful for terminals that doesn't support colors.
Will return an empty string if oldStr === newStr;
`js`
var diff = disparity.unifiedNoColor(file1, file2, {
paths: ['test/file1.js', 'test/file2.js']
});
console.log(diff);
!screenshot unified diff no color
String used on the diff headers to say that chars/lines was removed.
`js`
// default value
disparity.removed = 'removed';
String used on the diff headers to say that chars/lines was added.
`js`
// default value
disparity.added = 'added';
Object containing references to all the colors used by disparity.
If you want a different output than ansi (eg. HTML) you can replace the color
values:
`js
// wrap blocks into custom tags
disparity.colors = {
// chars diff
charsRemoved: { open: '
charsAdded: { open: '
// unified diff
removed: { open: '
added: { open: '
header: { open: '
section: { open: '
};
`
disparity also have a command line interface:
`
disparity [OPTIONS]
Options:
-c, --chars Output char diff (default mode).
-u, --unified Output unified diff.
--unified-no-color Don't output colors.
-v, --version Display current version.
-h, --help Display this help.
`
PS: cli can only compare 2 external files at the moment, no stdin` support.
Released under the MIT license.