spech
v0.2.1
Published
Check your text for grammar and spelling error using multiple providers
Downloads
232
Maintainers
Readme
spech
Check your text for grammar and spelling mistakes using multiple providers
- Multiple libraries/services for grammar and spelling checking
- Multilingual document support
- Zero config
- Can work offline (only with Hunspell provider)
Usage
Files checking
npx spech README.md
File name can be omitted, by default it searches files by **/*.md
mask.
Default language is English, it can be changed with -l
flag:
spech -l ru
spech -l ru-RU -l en-US
- for multilingual documents
String and STDIN checking
You can check a string value using STDIN or --input argument
cat README.md | spech
spech --input 'Check the text'
Directives
disable
<!-- spech-disable -->
This text is ignored
<!-- spech-enable -->
dictionary
Add a phrase to a local document dictionary
<!-- spech-dictionary myword -->
languages
Add document-specific languages
<!-- spech-languages en es -->
Providers
To configure a provider pass -p
flag:
spech -p hunspell -p yandex
Other options can be set in a config file.
Hunspell
Hunspell is the most popular open-source spell checker which supports a great variety of languages.
GrammarBot
Free grammar checking API. With an API key, you can receive 250 requests/day (~7500/mo) at no cost. Without an API key, requests are limited to 100 per day per IP address (~3000/mo). The API supports only English (en-US and en-GB).
Yandex Speller
Free and very fast spell checker API for en, ru and uk languages. It provides free 10k requests/day or 10m characters/day.
Configuring
Configuration can be stored in:
- spech.config.js
- "spech" section of the package.json
spech.config.js
module.exports = {
languages: ['en-us'],
providers: [
{ name: 'hunspell' },
{ name: 'grammarBot', apiKey: 'YOUR_API_KEY' },
],
};
Dictionaries
It's possible to add words which are marked as a mistake into a dictionary file. Just create a file with .dic extension in your project root:
mydictionary.dic
# Simple word
browserify
# Regexp
/Component.tsx?/
API Usage
The most useful parts of the library are available through facade class SpellChecker.
Here is a simple example how it can be used:
const { Config, SpellChecker } = require('spech');
async function getMistakes() {
const config = new Config({ ignoreCase: false });
const checker = new SpellChecker(config);
await checker.addDocumentsByMask(process.cwd(), 'docs/*.md');
checker.addDictionaryPhrase('exceptionphrase');
checker.addProviderByConfig({ name: 'hunspell' });
const noMistakes = await checker.checkDocuments();
if (noMistakes) {
return [];
}
const corrections = checker.documents.map(doc => doc.corrections).flat();
return corrections.map(correction => correction.fragment);
}