3.0.2 • Published 26 days ago

string-mismatch v3.0.2

Weekly downloads
13
License
Apache-2.0
Repository
github
Last release
26 days ago

string-mismatch library

Build Status codecov.io contributions welcome

The library contain the next string comparison algorithms:

GreedyLevenshteinDice Coefficient
ComplexityO(n*k) (k precision)O(n^2)O(nlog n)
GoodFast algorithmAlways the optimal solutionIs based in probabilities and is a really fast algorithm
BadThe solution is not the optimalComplexity is O(n^2)Impossible to see the differences between the strings
Use n^2 memory
Methodsdifferencedifferencedistance
distancedistance
Operations for transform the stringinsertioninsertionnot apply
deletiondeletion
substitution
Class nameGreedyLevenshteinDiceCoefficient

Why use string-mismatch:

  • Ease to install and start using it
  • Modular library (use only what you want to use).
  • Support for browser and node applications.
  • Compatible with es5
  • Not external dependencies.
  • Completely documented.
  • Coverage over 95%.

Library documentation

https://wil92.github.io/string-mismatch/

Install

npm install --save string-mismatch

Getting started

Nodejs application example

How to use the library and see the differences between two strings:

const sm = require("string-mismatch");
const greedyInstance = new sm.Greedy();

var start = 'This is a test for see how work the library',
    end   = 'This is a test for know how work the new library';

console.log(greedyInstance.differences(start, end));

The result is an object array with the mismatch result. Each object with the next structure:

{
  type: string, // type of sub-string:
                //   'sub' -> substitution
                //   'ins' -> insertion
                //   'del' -> deletion
                //   'eql' -> equal
  value: string // value of the current sub-string
}

The resulting string can be concatenated like the next example:

const sm = require("string-mismatch");
const greedyInstance = new sm.Greedy();

var start = 'This is a test for see how work the library',
    end   = 'This is a test for know how work the new library';

function showResult(diffs) {
    return diffs.reduce(function (text, value) {
        switch (value.type) {
            case 'del':
                return text + '(-' + value.value + ')';
            case 'ins':
                return text + '(+' + value.value + ')';
            case 'sub':
                return text + '(-+' + value.value + ')';
            case 'eql':
                return text + value.value;
        }
    }, '');
}

console.log(showResult(greedyInstance.differences(start, end)));
/*
result:
This is a test for (-see)(+know) how work the (+new )library
*/

This code can be tested in the project's examples. To run the examples use the next command:

npm start

Web application example

Import the library

<!--Greedy algorithm-->
<script src="lib/greedy.min.js" type="application/javascript"></script>
<!--Levenshtein algorithm-->
<script src="lib/levenshtein.min.js" type="application/javascript"></script>

Example with greedy algorithm:

<script type="application/javascript">
    var start = 'This is a test for see how work the library';
    var end = 'This is a test for know how work the new library';
    var alg = new Greedy(options);
    var diffs = alg.differences(start, end);
    console.log(diffs);
</script>

Example with the levenshtein algorithm:

<script type="application/javascript">
    var start = 'This is a test for see how work the library';
    var end = 'This is a test for know how work the new library';
    var alg = new Levenshtein(options);
    var diffs = alg.differences(start, end);
    console.log(diffs);
</script>

Testing code

npm test

Built With

  • webpack - For build the project
  • npm - Dependency Management
  • jest - Jest framework for test

Contributing

All contributions are welcome.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

  • Guillermo González - Initial work - wil92

CHANGELOG

License

This project is licensed under the MIT License - see the LICENSE.md file for details

3.0.2

26 days ago

3.0.0-snapshot

1 month ago

3.0.1

1 month ago

3.0.0

1 month ago

2.1.1

3 years ago

2.0.2

3 years ago

1.3.1

5 years ago

1.2.0

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.0

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.8

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago