Checks whole sentences / chunks of text for errors and returns positions and suggestions for each
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Upgrade dependencies, remove 'partial'-dependency Jun 27, 2018
test
.editorconfig
.gitignore
.jshintignore Adding jshint, npmignore and travis config Jan 12, 2015
.jshintrc Adding jshint, npmignore and travis config Jan 12, 2015
.npmignore
.travis.yml Remove support for node 0.10/0.12 Jul 25, 2018
CHANGELOG.md
LICENSE
README.md
index.js
package-lock.json
package.json

README.md

nodehun-sentences

Version npmBuild Status

nodehun is a great library for interacting with hunspell from node.js. It's fairly low-level, however, letting you check one word at a time. nodehun-sentences lets you easily check whole sentences or chunks of text for errors.

It asynchronously checks all the words and returns with a result array containing all the encountered typos. For each typo, you will also get an array of all the positions within the string where the typo was encountered, so you can easily visualize all errors.

Installation

$ npm install --save nodehun-sentences

Usage

const spellcheck = require('nodehun-sentences')

spellcheck(nodehunInstance, textToCheck, (err, typos) => {
  // NOTE: `err` does NOT contain whether typos was found -
  // it returns any actual *errors* (not being passed a
  // valid instance of nodehun, for instance)
  if (err) {
    throw err
  }

  // `typos` is an array of all typos, each one an object containing:
  //   - `word`: the word which was concidered a typo (string)
  //   - `suggestions`: list of suggestions (array of strings)
  //   - `positions`: list of positions where the typo was found (array of objects)
  typos.forEach(function(typo) {
    console.log('"' + typo.word + '" is not a valid word')
    console.log('found ' + typo.positions.length + ' occurences')
  })

  // Each entry in `typo.positions` contains the following keys:
  //   - `from`: The start offset for the typo within the text (integer)
  //   - `to`: The end offset for the typo within the text (integer)
  //   - `length`: Word length (integer)
  textToCheck.substring(typo[0].from, typo[0].to) === typo[0].word
})

Taken from examples/spellcheck.js:

const fs = require('fs')
const spellcheck = require('nodehun-sentences')
const nodehun = require('nodehun')
const hunspell = new nodehun(
  fs.readFileSync('path/to/dictionary.aff'),
  fs.readFileSync('path/to/dictionary.dic')
)

const text = 'This is some text we want to ceck for typos'

spellcheck(hunspell, text, function(err, typos) {
  if (err) {
    throw err
  }

  console.log(typos)

  typos == [{
    word: 'ceck',
    suggestions: [
      'check',
      'neck',
      'deck',
      'peck'
      // ...
    ],
    positions: [{
      from: 29,
      to: 33,
      length: 4
    }]
  }]
})

License

MIT-licensed. See LICENSE.