Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jhchen/fast-diff
A fast Javascript string diff
https://github.com/jhchen/fast-diff
Last synced: 3 days ago
JSON representation
A fast Javascript string diff
- Host: GitHub
- URL: https://github.com/jhchen/fast-diff
- Owner: jhchen
- License: apache-2.0
- Created: 2014-10-03T07:12:03.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-05-19T08:25:10.000Z (over 1 year ago)
- Last Synced: 2024-12-03T17:45:36.721Z (10 days ago)
- Language: JavaScript
- Size: 73.2 KB
- Stars: 654
- Watchers: 14
- Forks: 45
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-star - fast-diff
README
# Fast Diff ![Build Status](https://github.com/jhchen/fast-diff/actions/workflows/test.yml/badge.svg)
This is a simplified import of the excellent [diff-match-patch](https://code.google.com/p/google-diff-match-patch/) library by [Neil Fraser](https://neil.fraser.name/) into the Node.js environment. The match and patch parts are removed, as well as all the extra diff options. What remains is incredibly fast diffing between two strings.
The diff function is an implementation of ["An O(ND) Difference Algorithm and its Variations" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.6927&rep=rep1&type=pdf) with the suggested divide and conquer strategy along with several [optimizations](http://neil.fraser.name/news/2007/10/09/) Neil added.
```js
var diff = require('fast-diff');var good = 'Good dog';
var bad = 'Bad dog';var result = diff(good, bad);
// [[-1, "Goo"], [1, "Ba"], [0, "d dog"]]// Respect suggested edit location (cursor position), added in v1.1
diff('aaa', 'aaaa', 1)
// [[0, "a"], [1, "a"], [0, "aa"]]// For convenience
diff.INSERT === 1;
diff.EQUAL === 0;
diff.DELETE === -1;
```