An open API service indexing awesome lists of open source software.

https://github.com/bubkoo/spelling-suggestion

Given a name and a list of names that are not equal to the name, return a spelling suggestion if there is one that is close enough.
https://github.com/bubkoo/spelling-suggestion

Last synced: about 1 year ago
JSON representation

Given a name and a list of names that are not equal to the name, return a spelling suggestion if there is one that is close enough.

Awesome Lists containing this project

README

          

Spelling Suggestion

Given a name and a list of names that are not equal to the name, return a spelling suggestion if there is one that is close enough.


MIT License
Language
PRs Welcome
build
coverage

## Install

```shell
npm install --save spelling-suggestion
```

## Usage
Names less than length 3 only check for case-insensitive equality, not Levenshtein distance.

- If there is a candidate that's the same except for case, return that.
- If there is a candidate that's within one edit of the name, return that.
- Otherwise, return the candidate with the smallest Levenshtein distance, except for candidates:
- With no name
- Whose length differs from the target name by more than 0.34 of the length of the name.
- Whose levenshtein distance is more than 0.4 of the length of the name (0.4 allows 1 substitution/transposition for every 5 characters, and 1 insertion/deletion at 3 characters)

```js
import { getSpellingSuggestion } from 'spelling-suggestion';

// return the best matched item
getSpellingSuggestion(
'foo',
[
{ name: 'fo' },
{ name: 'foo' },
{ name: 'book' },
{ name: 'cook' },
{ name: 'food' },
],
(candidate) => candidate.name,
)
// => { name: 'food' }

// return the best matched string
getSpellingSuggestion('foo', ['fo', 'foo', 'book', 'cook', 'food']) // => food

// return the best matched string with case-insensitive equality
getSpellingSuggestion('foo', ['fo', 'Foo', 'book', 'cook', 'food']) // => Foo

// return undefined when no match found
getSpellingSuggestion('fo', ['fo', 'foo', 'book', 'cook', 'food']) // => undefined

// return the first best match
getSpellingSuggestion('foo', ['fo', 'foo', 'food', 'fooo', 'fook']) // => food
getSpellingSuggestion('foo', ['fo', 'foo', 'fook', 'food', 'fooo']) // => fook
getSpellingSuggestion('foo', ['fo', 'foo', 'fooo', 'fook', 'food']) // => fooo
```

## Contributing

Please let us know how can we help. Do check out [issues](https://github.com/bubkoo/spelling-suggestion/issues) for bug reports or suggestions first.

To become a contributor, please follow our [contributing guide](/CONTRIBUTING.md).


Contributors

## License

The scripts and documentation in this project are released under the [MIT License](LICENSE)