Skip to content

ebutleratlassian/diffparser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Unified diff parser for Node and the browser

This project is a ES2015 version of https://github.com/sergeyt/parse-diff.

It comes with a full test suite and in addition to line numbers also provides position information as required by the GitHub Comments API.

import parse from 'diffparser';

const diff = `
diff --git a/file b/file
index 123..456 789
--- a/file
+++ b/file
@@ -1,2 +1,2 @@
- line1
+ line2
`;

parse(diff);

This will return an array (one entry per file) with the following structure:

[
  {
    "from": "file",
    "to": "file",
    "chunks": [
      {
        "content": "@@ -1,2 +1,2 @@",
        "changes": [
          {
            "type": "del",
            "del": true,
            "oldLine": 1,
            "position": 1,
            "content": "- line1"
          },
          {
            "type": "add",
            "add": true,
            "newLine": 1,
            "position": 2,
            "content": "+ line2"
          }
        ],
        "oldStart": 1,
        "oldLines": 2,
        "newStart": 1,
        "newLines": 2
      }
    ],
    "deletions": 1,
    "additions": 1,
    "index": [
      "123..456",
      "789"
    ]
  }
]

Optional Rename Detection

You can pass { findRenames: true } as option in order to detect renamed files:

const diff = `
diff --git a/bar b/bar
new file mode 100644
index 0000000..4e4b354
--- /dev/null
+++ b/bar
@@ -0,0 +1,2 @@
+this is a
+sample file
diff --git a/foo b/foo
deleted file mode 100644
index 4e4b354..0000000
--- a/foo
+++ /dev/null
@@ -1,2 +0,0 @@
-this is a
-sample file
`;

parse(diff, { findRenames: true });

This will return the following array:

[
  {
    "renamed": true,
    "from": "foo",
    "to": "bar"
  }
]

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •