Overview
Comment: | [graphspell][js] spellchecker wrapper for ibdawg |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | graphspell |
Files: | files | file ages | folders |
SHA3-256: |
c989c20101f5f57aa0576fa234e931ec |
User & Date: | olr on 2018-02-13 10:47:56 |
Other Links: | manifest | tags |
Context
2018-02-13
| ||
13:38 | [graphspell][js] rename vars check-in: 62c389aedf user: olr tags: trunk, graphspell | |
10:47 | [graphspell][js] spellchecker wrapper for ibdawg check-in: c989c20101 user: olr tags: trunk, graphspell | |
10:47 | [graphspell][py] spellchecker wrapper for ibdawg check-in: dbf7b575b0 user: olr tags: trunk, graphspell | |
Changes
Added graphspell-js/spellchecker.js version [80a940103f].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | // Spellchecker // Wrapper for the IBDAWG class. // Useful to check several dictionaries at once. // To avoid iterating over a pile of dictionaries, it is assumed that 3 are enough: // - the main dictionary, bundled with the package // - the extended dictionary, added by an organization // - the personal dictionary, created by the user for its own convenience "use strict"; if (typeof(require) !== 'undefined') { var ibdawg = require("resource://grammalecte/graphspell/ibdawg.js"); } ${map} const dDefaultDictionaries = new Map([ ["fr", "fr.bdic"], ["en", "en.bdic"] ]); class Spellchecker { constructor (sLangCode, sfMainDic="", sfExtendedDic="", sfPersonalDic="") { // returns true if the main dictionary is loaded this.sLangCode = sLangCode; if (sfMainDic === "") { sfMainDic = dDefaultDictionaries.gl_get(sLangCode, ""); } this.oMainDic = this._loadDictionary(sfMainDic); this.oExtendedDic = this._loadDictionary(sfExtendedDic); this.oPersonalDic = this._loadDictionary(sfPersonalDic); return bool(this.oMainDic); } _loadDictionary (sfDictionary) { // returns an IBDAWG object if (sfDictionary === "") { return null; } try { return ibdawg.IBDAWG(sfDictionary); } catch (e) { console.log("Error: <" + sDicName + "> not loaded."); console.log(e.message); return null; } } setMainDictionary (sfDictionary) { // returns true if the dictionary is loaded this.oMainDic = this._loadDictionary(sfDictionary); return bool(this.oMainDic); } setExtendedDictionary (sfDictionary) { // returns true if the dictionary is loaded this.oExtendedDic = this._loadDictionary(sfDictionary); return bool(this.oExtendedDic); } setPersonalDictionary (sfDictionary) { // returns true if the dictionary is loaded this.oPersonalDic = this._loadDictionary(sfDictionary); return bool(this.oPersonalDic); } // IBDAWG functions isValidToken (sToken) { // checks if sToken is valid (if there is hyphens in sToken, sToken is split, each part is checked) if (this.oMainDic.isValidToken(sToken)) { return true; } if (this.oExtendedDic && this.oExtendedDic.isValidToken(sToken)) { return true; } if (this.oPersonalDic && this.oPersonalDic.isValidToken(sToken)) { return true; } return false; } isValid (sWord) { // checks if sWord is valid (different casing tested if the first letter is a capital) if (this.oMainDic.isValid(sToken)) { return true; } if (this.oExtendedDic && this.oExtendedDic.isValid(sToken)) { return true; } if (this.oPersonalDic && this.oPersonalDic.isValid(sToken)) { return true; } return false; } lookup (sWord) { // checks if sWord is in dictionary as is (strict verification) if (this.oMainDic.lookup(sToken)) { return true; } if (this.oExtendedDic && this.oExtendedDic.lookup(sToken)) { return true; } if (this.oPersonalDic && this.oPersonalDic.lookup(sToken)) { return true; } return false; } getMorph (sWord) { // retrieves morphologies list, different casing allowed let lResult = this.oMainDic.getMorph(sToken); if (this.oExtendedDic) { lResult.extends(this.oExtendedDic.getMorph(sToken)); } if (this.oPersonalDic) { lResult.extends(this.oPersonalDic.getMorph(sToken)); } return lResult; } * suggest (sWord, nSuggLimit=10) { // generator: returns 1,2 or 3 lists of suggestions yield this.oMainDic.suggest(sWord, nSuggLimit); if (this.oExtendedDic) { yield this.oExtendedDic.suggest(sWord, nSuggLimit); } if (this.oPersonalDic) { yield this.oPersonalDic.suggest(sWord, nSuggLimit); } } * select (sPattern="") { // generator: returns all entries which morphology fits <sPattern> yield* this.oMainDic.select(sPattern) if (this.oExtendedDic) { yield* this.oExtendedDic.select(sPattern); } if (this.oPersonalDic) { yield* this.oPersonalDic.select(sPattern); } } } |