Skip to content

rexxars/nodehun-sentences

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

About

Checks whole sentences / chunks of text for errors and returns positions and suggestions for each

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •