Skip to content

mvoss9000/unidiff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unidiff

unidiff adds support for creating unified diff format to jsdiff

The following snippet:

var unidiff = require('unidiff')

var diff = unidiff.diffLines(
    'a quick\nbrown\nfox\njumped\nover\nthe\nlazy\ndog\n',
    'a quick\nbrown\ncat\njumped\nat\nthe\nnot-so-lazy\nfox\n'
)
console.log(unidiff.formatLines(diff), {context: 2})

Produces this unified diff output:

--- a
+++ b
@@ -1,8 +1,8 @@
 a quick
 brown
-fox
+cat
 jumped
-over
+at
 the
-lazy
-dog
+not-so-lazy
+fox

This same output can be achieved more concisely using the diffAsText function:

console.log(require('unidiff').diffAsText(
    'a quick\nbrown\nfox\njumped\nover\nthe\nlazy\ndog\n',
    'a quick\nbrown\ncat\njumped\nat\nthe\nnot-so-lazy\nfox\n'
))

Both formatLines() and diffAsText() take a format options parameter with the following options.

{
    aname:        file name for input a, defaults to 'a'
    bname:        file name for input b, defaults to 'b'
    pre_context:  write up to this many unmodified lines before each change
    post_context: write up to this many unmodified lines after each change
    context:      default values for pre_context and post_context (specify both in one setting)
                  (context defaults to 3 when nothing is specified)
    format:       format of output text.  currently only "unified" is supported
}

Differences From JSDiff

All js-diff functions are also availalbe in unidiff, with a couple minor changes:

  • unidiff.diffLines() and unidiff.diffAsText() accept arrays of strings as well as strings with new lines for input.
  • unidiff.diffLines() returns an empty array when there are no differences instead of an array with a single unmodified change.

Useful features to add to unidiff

  • implement parsing of unified format to convert text output into patches.

About

javascript diff with unified diff format

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published