Skip to content

roark/fast-diff-astral

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fast Diff Astral

This is an updated version of Jason Chen's excellent Fast-Diff library. It is expanded upon to handle surrogate pairs in the UTF-16 astral plane.

Fast-Diff itself is a simplified import of the excellent diff-match-patch library by Neil Fraser 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) with the suggested divide and conquer strategy along with several optimizations Neil added.

var diff = require('fast-diff-astral');

var good = 'Good dog 🐶';
var bad = 'Bad dog 🐯';

var result = diff(good, bad);
//   [ [ -1, 'Goo' ],
//     [ 1, 'Ba' ],
//     [ 0, 'd dog ' ],
//     [ -1, '🐶' ],
//     [ 1, '🐯' ] ]

// For convenience
diff.INSERT === 1;
diff.EQUAL === 0;
diff.DELETE === -1;

About

A fast Javascript string diff

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%