add types for spellchecker package

This commit is contained in:
Dale Fenton 2019-02-01 10:27:31 -05:00
parent 028e633351
commit c52b655134
4 changed files with 128 additions and 0 deletions

63
types/spellchecker/index.d.ts vendored Normal file
View File

@ -0,0 +1,63 @@
// Type definitions for spellchecker 3.5
// Project: http://atom.github.io/node-spellchecker
// Definitions by: Dale Fenton <https://github.com/dalevfenton>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
export as namespace Spellchecker;
/* ---------------------------------------------------------------------------
Custom Types / Interfaces
--------------------------------------------------------------------------- */
/**
* MisspelledLocation - shape of an object returned by checkSpelling to
* identify locations of misspelled words in a corpus.
* @description a misspelled word can be found by corpus.slice(start, end)
* start - start index of a misspelled word in a corpus
* end - end index of a misspelled word in a corpus
*/
export interface MisspelledLocation {
start: number;
end: number;
}
/* ---------------------------------------------------------------------------
Methods
--------------------------------------------------------------------------- */
/**
* Spellchecker.isMisspelled - Check if a word is misspelled.
* @param word - String word to check.
* @returns boolean - true if the word is misspelled, false otherwise.
*/
export function isMisspelled(word: string): boolean;
/**
* Spellchecker.getCorrectionsForMisspelling - Get the corrections for a misspelled word.
* @param word - String word to get corrections for.
* @returns array - Returns a non-null but possibly empty array of string corrections.
*/
export function getCorrectionsForMisspelling(word: string): string[];
/**
* Spellchecker.checkSpelling - Identify misspelled words in a corpus of text.
* @param corpus - String corpus of text to spellcheck.
* @returns array - Returns an Array containing {start, end} objects that describe an
* index range within the original String that contains a misspelled word.
*/
export function checkSpelling(corpus: string): MisspelledLocation[];
/**
* Spellchecker.checkSpellingAsync - Asynchronously identify misspelled words.
* @param corpus - String corpus of text to spellcheck.
* @returns array - Returns a Promise that resolves with the Array described by checkSpelling().
*/
export function checkSpellingAsync(corpus: string): Promise<MisspelledLocation[]>;
/**
* Spellchecker.add - Adds a word to the dictionary.
* When using Hunspell, this will not modify the .dic file;
* new words must be added each time the spellchecker is created. Use a custom dictionary file.
* @param word - String word to add.
* @returns void
*/
export function add(word: string): void;

View File

@ -0,0 +1,41 @@
import * as Spellchecker from 'spellchecker';
const additionalDictionary = ['Xynoronmalade'];
// add words to the dictionary
additionalDictionary.forEach(word => Spellchecker.add(word));
let testWord = 'kat';
let testCorpus = 'The queeck brown fox jumped over the lazy dog, from Xynoronmalade';
let testCorpusAsync = 'The queeck brown fox jumped over the lazy dog, from Xynoronmalade';
// check and correct a single word
if (Spellchecker.isMisspelled(testWord)) {
const corrections = Spellchecker.getCorrectionsForMisspelling(testWord);
if (corrections.length > 0) {
testWord = corrections[0];
}
}
// check and correct words in a body of text
const misspellings = Spellchecker.checkSpelling(testCorpus);
misspellings.forEach(location => {
const misspelled = testCorpus.slice(location.start, location.end);
const corrections = Spellchecker.getCorrectionsForMisspelling(misspelled);
if (corrections.length > 0) {
testCorpus = testCorpus.replace(misspelled, corrections[0]);
}
});
// check for corrections asynchronously
const asyncSpellCheck = async () => {
// check and correct words in a body of text
const misspellings = await Spellchecker.checkSpellingAsync(testCorpusAsync);
misspellings.forEach(location => {
const misspelled = testCorpusAsync.slice(location.start, location.end);
const corrections = Spellchecker.getCorrectionsForMisspelling(misspelled);
if (corrections.length > 0) {
testCorpusAsync = testCorpusAsync.replace(misspelled, corrections[0]);
}
});
};

View File

@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"spellchecker-tests.ts"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }