onp
v2.0.4
Published
Text diff algorithm based on 'An O(NP) Sequence Comparison Algorithm' from Sun Wu, Udi Manber and Gene Myers
Downloads
1,616
Maintainers
Readme
ONP
What is it?
Text diff algorithm based on 'An O(NP) Sequence Comparison Algorithm' from Sun Wu, Udi Manber and Gene Myers. This
is implementation of this algorithm wrapped into typescript and UMD module. This module is also able compare array
of items with method .toString()
and keep original objects and instances. It's has really simple API.
Install
With npm do:
npm install onp
API for compare
diffText(a: string, b: string):
DiffText
This method take 2 string and make compare of these strings. It returns object with
lcs
property, that is contains "longest common subsequence" text,
distance
property that represents "Levenshtein distance" and
results
property that contains array with string and state (1, 0, -1)
diffArray<T>(a: Array<T>, b: Array<T>):
DiffArray<T>
This method take 2 array of objects, that has implemented method .toString()
and make
compare of these objects based on .toString()
result. This method try to keep instances of
objects as valid as possible. It returns object with
lcs
property, that is contains "longest common subsequence" text,
distance
property that represents "Levenshtein distance" and
results
property that contains array with items of T
and state (1, 0, -1)
Typescript usage example
import {diffText} from "onp";
const results = diffText("Text A", "Text B");
console.log(results.distance);
//2
console.log(results.lcs);
//"Text "
console.log(results.results);
//[
// { left: 'Text ', right: 'Text ', state: 0 },
// { left: 'A', right: 'A', state: -1 },
// { left: 'B', right: 'B', state: 1 }
//]
Javascript usage example
const diffText = require("onp").diffText;
const results = diffText("Text A", "Text B");
console.log(results.distance);
//2
console.log(results.lcs);
//"Text "
console.log(results.results);
//[
// { left: 'Text ', right: 'Text ', state: 0 },
// { left: 'A', right: 'A', state: -1 },
// { left: 'B', right: 'B', state: 1 }
//]
const results = onp.diffText("Text A", "Text B");
console.log(results.distance);
//2
console.log(results.lcs);
//"Text "
console.log(results.results);
//[
// { left: 'Text ', right: 'Text ', state: 0 },
// { left: 'A', right: 'A', state: -1 },
// { left: 'B', right: 'B', state: 1 }
//]
Examples
Live example with text diff, click on image to run CodePen
Donate me 😉
| QR | Paypal | | ------ | ------ | | | |
License
MIT - MIT License