Grammalecte  Hex Artifact Content

Artifact a782304429abe9d6adb8af50c899434e28045d7ea8780830a057d9b02708cd23:


0000: 2f 2a 0a 20 20 20 20 21 20 47 72 61 6d 6d 61 6c  /*.    ! Grammal
0010: 65 63 74 65 2c 20 67 72 61 6d 6d 61 72 20 63 68  ecte, grammar ch
0020: 65 63 6b 65 72 20 21 0a 20 20 20 20 41 50 49 20  ecker !.    API 
0030: 70 6f 75 72 20 66 61 63 69 6c 69 74 65 72 20 6c  pour faciliter l
0040: 27 75 74 69 6c 69 73 61 74 69 6f 6e 20 64 65 20  'utilisation de 
0050: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 0a 2a 2f 0a  Grammalecte..*/.
0060: 0a 2f 2a 20 6a 73 68 69 6e 74 20 65 73 76 65 72  ./* jshint esver
0070: 73 69 6f 6e 3a 36 2c 20 2d 57 30 39 37 20 2a 2f  sion:6, -W097 */
0080: 0a 2f 2a 20 6a 73 6c 69 6e 74 20 65 73 76 65 72  ./* jslint esver
0090: 73 69 6f 6e 3a 36 20 2a 2f 0a 2f 2a 20 67 6c 6f  sion:6 */./* glo
00a0: 62 61 6c 20 72 65 71 75 69 72 65 2c 20 65 78 70  bal require, exp
00b0: 6f 72 74 73 2c 20 63 6f 6e 73 6f 6c 65 20 2a 2f  orts, console */
00c0: 0a 0a 22 75 73 65 20 73 74 72 69 63 74 22 3b 0a  .."use strict";.
00d0: 0a 63 6c 61 73 73 20 47 72 61 6d 6d 61 72 43 68  .class GrammarCh
00e0: 65 63 6b 65 72 20 7b 0a 0a 20 20 20 20 63 6f 6e  ecker {..    con
00f0: 73 74 72 75 63 74 6f 72 28 61 49 6e 69 74 2c 20  structor(aInit, 
0100: 73 4c 61 6e 67 43 6f 64 65 20 3d 20 22 66 72 22  sLangCode = "fr"
0110: 2c 20 73 43 6f 6e 74 65 78 74 20 3d 20 22 4a 61  , sContext = "Ja
0120: 76 61 73 63 72 69 70 74 22 29 20 7b 0a 20 20 20  vascript") {.   
0130: 20 20 20 20 20 74 68 69 73 2e 73 4c 61 6e 67 43       this.sLangC
0140: 6f 64 65 20 3d 20 73 4c 61 6e 67 43 6f 64 65 3b  ode = sLangCode;
0150: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 43  .        this.sC
0160: 6f 6e 74 65 78 74 20 3d 20 73 43 6f 6e 74 65 78  ontext = sContex
0170: 74 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 49 6d  t;..        //Im
0180: 70 6f 72 74 61 74 69 6f 6e 20 64 65 73 20 66 69  portation des fi
0190: 63 68 69 65 72 73 20 6e c3 a9 63 65 73 73 61 69  chiers n..cessai
01a0: 72 65 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  re.        this.
01b0: 73 50 61 74 68 52 6f 6f 74 20 3d 20 5f 5f 64 69  sPathRoot = __di
01c0: 72 6e 61 6d 65 20 2b 20 22 2f 67 72 61 6d 6d 61  rname + "/gramma
01d0: 6c 65 63 74 65 22 3b 0a 20 20 20 20 20 20 20 20  lecte";.        
01e0: 74 68 69 73 2e 5f 68 65 6c 70 65 72 73 20 3d 20  this._helpers = 
01f0: 72 65 71 75 69 72 65 28 74 68 69 73 2e 73 50 61  require(this.sPa
0200: 74 68 52 6f 6f 74 20 2b 20 22 2f 67 72 61 70 68  thRoot + "/graph
0210: 73 70 65 6c 6c 2f 68 65 6c 70 65 72 73 2e 6a 73  spell/helpers.js
0220: 22 29 3b 0a 0a 20 20 20 20 20 20 20 20 74 68 69  ");..        thi
0230: 73 2e 69 73 49 6e 69 74 20 3d 20 7b 0a 20 20 20  s.isInit = {.   
0240: 20 20 20 20 20 20 20 20 20 47 72 61 6d 6d 61 6c           Grammal
0250: 65 63 74 65 3a 20 66 61 6c 73 65 2c 0a 20 20 20  ecte: false,.   
0260: 20 20 20 20 20 20 20 20 20 47 72 61 70 68 73 70           Graphsp
0270: 65 6c 6c 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20  ell: false,.    
0280: 20 20 20 20 20 20 20 20 54 6f 6b 65 6e 69 7a 65          Tokenize
0290: 72 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20  r: false,.      
02a0: 20 20 20 20 20 20 54 65 78 74 46 6f 72 6d 61 74        TextFormat
02b0: 74 65 72 3a 20 66 61 6c 73 65 2c 0a 20 20 20 20  ter: false,.    
02c0: 20 20 20 20 20 20 20 20 4c 65 78 69 63 6f 67 72          Lexicogr
02d0: 61 70 68 65 72 3a 20 66 61 6c 73 65 0a 20 20 20  apher: false.   
02e0: 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 20       };..       
02f0: 20 69 66 20 28 61 49 6e 69 74 29 7b 0a 20 20 20   if (aInit){.   
0300: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
0310: 61 64 28 61 49 6e 69 74 29 3b 0a 20 20 20 20 20  ad(aInit);.     
0320: 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20     }.    }..    
0330: 2f 2f 41 75 74 6f 2d 63 68 61 72 67 65 6d 65 6e  //Auto-chargemen
0340: 74 20 61 76 65 63 20 64 c3 a9 70 65 6e 64 65 6e  t avec d..penden
0350: 63 65 0a 20 20 20 20 6c 6f 61 64 28 61 49 6e 69  ce.    load(aIni
0360: 74 20 3d 20 5b 22 47 72 61 6d 6d 61 6c 65 63 74  t = ["Grammalect
0370: 65 22 2c 20 22 47 72 61 70 68 73 70 65 6c 6c 22  e", "Graphspell"
0380: 2c 20 22 54 65 78 74 46 6f 72 6d 61 74 74 65 72  , "TextFormatter
0390: 22 2c 20 22 4c 65 78 69 63 6f 67 72 61 70 68 65  ", "Lexicographe
03a0: 72 22 2c 20 22 54 6f 6b 65 6e 69 7a 65 72 22 5d  r", "Tokenizer"]
03b0: 29 7b 0a 20 20 20 20 20 20 20 20 2f 2f 61 49 6e  ){.        //aIn
03c0: 69 74 20 70 65 72 6d 65 74 20 64 65 20 63 68 61  it permet de cha
03d0: 72 67 65 72 20 71 75 65 20 63 65 72 74 61 69 6e  rger que certain
03e0: 20 63 6f 6d 70 6f 73 61 6e 74 0a 20 20 20 20 20   composant.     
03f0: 20 20 20 2f 2f 20 3d 3e 20 c3 a9 76 69 74 65 20     // => ..vite 
0400: 64 65 20 63 68 61 72 67 65 72 20 74 6f 75 74 65  de charger toute
0410: 73 20 64 6f 6e 6e c3 a9 65 73 20 73 69 20 70 61  s donn..es si pa
0420: 72 20 65 78 65 6d 70 6c 65 20 6f 6e 20 61 20 62  r exemple on a b
0430: 65 73 6f 69 6e 20 71 75 65 20 64 75 20 6c 65 78  esoin que du lex
0440: 69 67 72 61 70 68 65 0a 20 20 20 20 20 20 20 20  igraphe.        
0450: 2f 2f 20 3d 3e 20 73 6f 72 74 65 20 64 65 20 67  // => sorte de g
0460: 65 73 74 69 6f 6e 6e 61 69 72 65 20 64 65 20 64  estionnaire de d
0470: c3 a9 70 65 6e 64 65 6e 63 65 20 28 70 65 75 74  ..pendence (peut
0480: 20 c3 aa 74 72 65 20 61 6d c3 a9 6c 69 6f 72 c3   ..tre am..lior.
0490: a9 29 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  .).        this.
04a0: 69 73 49 6e 69 74 20 3d 20 7b 7d 3b 0a 20 20 20  isInit = {};.   
04b0: 20 20 20 20 20 69 66 20 28 20 61 49 6e 69 74 2e       if ( aInit.
04c0: 69 6e 64 65 78 4f 66 28 22 47 72 61 6d 6d 61 6c  indexOf("Grammal
04d0: 65 63 74 65 22 29 20 21 3d 3d 20 66 61 6c 73 65  ecte") !== false
04e0: 20 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20   ){.            
04f0: 2f 2f 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 69  //console.log('i
0500: 6e 69 74 20 47 72 61 6d 6d 61 6c 65 63 74 65 27  nit Grammalecte'
0510: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  );.            t
0520: 68 69 73 2e 5f 6f 47 63 65 20 3d 20 72 65 71 75  his._oGce = requ
0530: 69 72 65 28 74 68 69 73 2e 73 50 61 74 68 52 6f  ire(this.sPathRo
0540: 6f 74 20 2b 20 22 2f 66 72 2f 67 63 5f 65 6e 67  ot + "/fr/gc_eng
0550: 69 6e 65 2e 6a 73 22 29 3b 0a 20 20 20 20 20 20  ine.js");.      
0560: 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 47 63 65        this._oGce
0570: 2e 6c 6f 61 64 28 74 68 69 73 2e 73 43 6f 6e 74  .load(this.sCont
0580: 65 78 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ext);.          
0590: 20 20 74 68 69 73 2e 69 73 49 6e 69 74 2e 47 72    this.isInit.Gr
05a0: 61 6d 6d 61 6c 65 63 74 65 20 3d 20 74 72 75 65  ammalecte = true
05b0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
05c0: 69 73 2e 6f 53 70 65 6c 6c 43 68 65 63 6b 65 72  is.oSpellChecker
05d0: 20 3d 20 74 68 69 73 2e 5f 6f 47 63 65 2e 67 65   = this._oGce.ge
05e0: 74 53 70 65 6c 6c 43 68 65 63 6b 65 72 28 29 3b  tSpellChecker();
05f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
0600: 73 2e 69 73 49 6e 69 74 2e 47 72 61 70 68 73 70  s.isInit.Graphsp
0610: 65 6c 6c 20 3d 20 74 72 75 65 3b 0a 20 20 20 20  ell = true;.    
0620: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 6f          this.oTo
0630: 6b 65 6e 69 7a 65 72 20 3d 20 74 68 69 73 2e 6f  kenizer = this.o
0640: 53 70 65 6c 6c 43 68 65 63 6b 65 72 2e 67 65 74  SpellChecker.get
0650: 54 6f 6b 65 6e 69 7a 65 72 28 29 3b 0a 20 20 20  Tokenizer();.   
0660: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 73           this.is
0670: 49 6e 69 74 2e 54 6f 6b 65 6e 69 7a 65 72 20 3d  Init.Tokenizer =
0680: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d   true;.        }
0690: 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 20 21  ..        if ( !
06a0: 74 68 69 73 2e 69 73 49 6e 69 74 2e 47 72 61 70  this.isInit.Grap
06b0: 68 73 70 65 6c 6c 20 26 26 20 28 61 49 6e 69 74  hspell && (aInit
06c0: 2e 69 6e 64 65 78 4f 66 28 22 47 72 61 70 68 73  .indexOf("Graphs
06d0: 70 65 6c 6c 22 29 20 21 3d 3d 20 66 61 6c 73 65  pell") !== false
06e0: 20 7c 7c 20 61 49 6e 69 74 2e 69 6e 64 65 78 4f   || aInit.indexO
06f0: 66 28 22 4c 65 78 69 63 6f 67 72 61 70 68 65 72  f("Lexicographer
0700: 22 29 20 21 3d 3d 20 66 61 6c 73 65 29 29 7b 0a  ") !== false)){.
0710: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 63 6f              //co
0720: 6e 73 6f 6c 65 2e 6c 6f 67 28 27 69 6e 69 74 20  nsole.log('init 
0730: 47 72 61 70 68 73 70 65 6c 6c 27 29 3b 0a 20 20  Graphspell');.  
0740: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f            this._
0750: 53 70 65 6c 6c 43 68 65 63 6b 65 72 20 3d 20 72  SpellChecker = r
0760: 65 71 75 69 72 65 28 74 68 69 73 2e 73 50 61 74  equire(this.sPat
0770: 68 52 6f 6f 74 20 2b 20 22 2f 67 72 61 70 68 73  hRoot + "/graphs
0780: 70 65 6c 6c 2f 73 70 65 6c 6c 63 68 65 63 6b 65  pell/spellchecke
0790: 72 2e 6a 73 22 29 3b 0a 20 20 20 20 20 20 20 20  r.js");.        
07a0: 20 20 20 20 74 68 69 73 2e 6f 53 70 65 6c 6c 43      this.oSpellC
07b0: 68 65 63 6b 65 72 20 3d 20 6e 65 77 20 74 68 69  hecker = new thi
07c0: 73 2e 5f 53 70 65 6c 6c 43 68 65 63 6b 65 72 2e  s._SpellChecker.
07d0: 53 70 65 6c 6c 43 68 65 63 6b 65 72 28 74 68 69  SpellChecker(thi
07e0: 73 2e 73 4c 61 6e 67 43 6f 64 65 2c 20 74 68 69  s.sLangCode, thi
07f0: 73 2e 73 50 61 74 68 52 6f 6f 74 20 2b 20 22 2f  s.sPathRoot + "/
0800: 67 72 61 70 68 73 70 65 6c 6c 2f 5f 64 69 63 74  graphspell/_dict
0810: 69 6f 6e 61 72 69 65 73 22 29 3b 0a 20 20 20 20  ionaries");.    
0820: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 73 49          this.isI
0830: 6e 69 74 2e 47 72 61 70 68 73 70 65 6c 6c 20 3d  nit.Graphspell =
0840: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20   true;.         
0850: 20 20 20 74 68 69 73 2e 6f 54 6f 6b 65 6e 69 7a     this.oTokeniz
0860: 65 72 20 3d 20 74 68 69 73 2e 6f 53 70 65 6c 6c  er = this.oSpell
0870: 43 68 65 63 6b 65 72 2e 67 65 74 54 6f 6b 65 6e  Checker.getToken
0880: 69 7a 65 72 28 29 3b 0a 20 20 20 20 20 20 20 20  izer();.        
0890: 20 20 20 20 74 68 69 73 2e 69 73 49 6e 69 74 2e      this.isInit.
08a0: 54 6f 6b 65 6e 69 7a 65 72 20 3d 20 74 72 75 65  Tokenizer = true
08b0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20  ;.        }..   
08c0: 20 20 20 20 20 69 66 20 28 20 21 74 68 69 73 2e       if ( !this.
08d0: 69 73 49 6e 69 74 2e 54 6f 6b 65 6e 69 7a 65 72  isInit.Tokenizer
08e0: 20 26 26 20 61 49 6e 69 74 2e 69 6e 64 65 78 4f   && aInit.indexO
08f0: 66 28 22 54 6f 6b 65 6e 69 7a 65 72 22 29 20 21  f("Tokenizer") !
0900: 3d 3d 20 66 61 6c 73 65 20 29 7b 0a 20 20 20 20  == false ){.    
0910: 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 73 6f 6c          //consol
0920: 65 2e 6c 6f 67 28 27 69 6e 69 74 20 54 6f 6b 65  e.log('init Toke
0930: 6e 69 7a 65 72 27 29 3b 0a 20 20 20 20 20 20 20  nizer');.       
0940: 20 20 20 20 20 74 68 69 73 2e 5f 54 6f 6b 65 6e       this._Token
0950: 69 7a 65 72 20 3d 20 72 65 71 75 69 72 65 28 74  izer = require(t
0960: 68 69 73 2e 73 50 61 74 68 52 6f 6f 74 20 2b 20  his.sPathRoot + 
0970: 22 2f 67 72 61 70 68 73 70 65 6c 6c 2f 74 6f 6b  "/graphspell/tok
0980: 65 6e 69 7a 65 72 2e 6a 73 22 29 3b 0a 20 20 20  enizer.js");.   
0990: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54           this.oT
09a0: 6f 6b 65 6e 69 7a 65 72 20 3d 20 6e 65 77 20 74  okenizer = new t
09b0: 68 69 73 2e 5f 54 6f 6b 65 6e 69 7a 65 72 2e 54  his._Tokenizer.T
09c0: 6f 6b 65 6e 69 7a 65 72 28 74 68 69 73 2e 73 4c  okenizer(this.sL
09d0: 61 6e 67 43 6f 64 65 29 3b 0a 20 20 20 20 20 20  angCode);.      
09e0: 20 20 20 20 20 20 74 68 69 73 2e 69 73 49 6e 69        this.isIni
09f0: 74 2e 54 6f 6b 65 6e 69 7a 65 72 20 3d 20 74 72  t.Tokenizer = tr
0a00: 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20  ue;.        }.. 
0a10: 20 20 20 20 20 20 20 69 66 20 28 20 61 49 6e 69         if ( aIni
0a20: 74 2e 69 6e 64 65 78 4f 66 28 22 54 65 78 74 46  t.indexOf("TextF
0a30: 6f 72 6d 61 74 74 65 72 22 29 20 21 3d 3d 20 66  ormatter") !== f
0a40: 61 6c 73 65 20 29 7b 0a 20 20 20 20 20 20 20 20  alse ){.        
0a50: 20 20 20 20 2f 2f 63 6f 6e 73 6f 6c 65 2e 6c 6f      //console.lo
0a60: 67 28 27 69 6e 69 74 20 54 65 78 74 46 6f 72 6d  g('init TextForm
0a70: 61 74 74 65 72 27 29 3b 0a 20 20 20 20 20 20 20  atter');.       
0a80: 20 20 20 20 20 74 68 69 73 2e 5f 6f 54 65 78 74       this._oText
0a90: 20 3d 20 72 65 71 75 69 72 65 28 74 68 69 73 2e   = require(this.
0aa0: 73 50 61 74 68 52 6f 6f 74 20 2b 20 22 2f 66 72  sPathRoot + "/fr
0ab0: 2f 74 65 78 74 66 6f 72 6d 61 74 74 65 72 2e 6a  /textformatter.j
0ac0: 73 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  s");.           
0ad0: 20 74 68 69 73 2e 6f 54 65 78 74 46 6f 72 6d 61   this.oTextForma
0ae0: 74 74 65 72 20 3d 20 6e 65 77 20 74 68 69 73 2e  tter = new this.
0af0: 5f 6f 54 65 78 74 2e 54 65 78 74 46 6f 72 6d 61  _oText.TextForma
0b00: 74 74 65 72 28 29 3b 0a 20 20 20 20 20 20 20 20  tter();.        
0b10: 20 20 20 20 74 68 69 73 2e 69 73 49 6e 69 74 2e      this.isInit.
0b20: 54 65 78 74 46 6f 72 6d 61 74 74 65 72 20 3d 20  TextFormatter = 
0b30: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a  true;.        }.
0b40: 0a 20 20 20 20 20 20 20 20 69 66 20 28 20 61 49  .        if ( aI
0b50: 6e 69 74 2e 69 6e 64 65 78 4f 66 28 22 4c 65 78  nit.indexOf("Lex
0b60: 69 63 6f 67 72 61 70 68 65 72 22 29 20 21 3d 3d  icographer") !==
0b70: 20 66 61 6c 73 65 20 29 7b 0a 20 20 20 20 20 20   false ){.      
0b80: 20 20 20 20 20 20 2f 2f 63 6f 6e 73 6f 6c 65 2e        //console.
0b90: 6c 6f 67 28 27 69 6e 69 74 20 4c 65 78 69 63 6f  log('init Lexico
0ba0: 67 72 61 70 68 65 72 27 29 3b 0a 20 20 20 20 20  grapher');.     
0bb0: 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 4c 65         this._oLe
0bc0: 78 20 3d 20 72 65 71 75 69 72 65 28 74 68 69 73  x = require(this
0bd0: 2e 73 50 61 74 68 52 6f 6f 74 20 2b 20 22 2f 66  .sPathRoot + "/f
0be0: 72 2f 6c 65 78 69 63 6f 67 72 61 70 68 65 2e 6a  r/lexicographe.j
0bf0: 73 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  s");.           
0c00: 20 74 68 69 73 2e 6f 4c 65 78 69 63 6f 67 72 61   this.oLexicogra
0c10: 70 68 65 72 20 3d 20 6e 65 77 20 74 68 69 73 2e  pher = new this.
0c20: 5f 6f 4c 65 78 2e 4c 65 78 69 63 6f 67 72 61 70  _oLex.Lexicograp
0c30: 68 65 28 0a 20 20 20 20 20 20 20 20 20 20 20 20  he(.            
0c40: 20 20 20 20 74 68 69 73 2e 6f 53 70 65 6c 6c 43      this.oSpellC
0c50: 68 65 63 6b 65 72 2c 0a 20 20 20 20 20 20 20 20  hecker,.        
0c60: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54 6f          this.oTo
0c70: 6b 65 6e 69 7a 65 72 2c 0a 20 20 20 20 20 20 20  kenizer,.       
0c80: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 68           this._h
0c90: 65 6c 70 65 72 73 2e 6c 6f 61 64 46 69 6c 65 28  elpers.loadFile(
0ca0: 74 68 69 73 2e 73 50 61 74 68 52 6f 6f 74 20 2b  this.sPathRoot +
0cb0: 20 22 2f 66 72 2f 6c 6f 63 75 74 69 6f 6e 73 5f   "/fr/locutions_
0cc0: 64 61 74 61 2e 6a 73 6f 6e 22 29 0a 20 20 20 20  data.json").    
0cd0: 20 20 20 20 20 20 20 20 29 3b 0a 20 20 20 20 20          );.     
0ce0: 20 20 20 20 20 20 20 74 68 69 73 2e 69 73 49 6e         this.isIn
0cf0: 69 74 2e 4c 65 78 69 63 6f 67 72 61 70 68 65 72  it.Lexicographer
0d00: 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20   = true;.       
0d10: 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f   }.    }..    //
0d20: 46 6f 6e 63 74 69 6f 6e 73 20 63 6f 6e 63 65 72  Fonctions concer
0d30: 6e 61 6e 74 3a 20 47 72 61 6d 6d 61 6c 65 63 74  nant: Grammalect
0d40: 65 0a 20 20 20 20 67 65 74 47 72 61 6d 6d 61 6c  e.    getGrammal
0d50: 65 63 74 65 28 29 7b 0a 20 20 20 20 20 20 20 20  ecte(){.        
0d60: 69 66 20 28 21 74 68 69 73 2e 69 73 49 6e 69 74  if (!this.isInit
0d70: 2e 47 72 61 6d 6d 61 6c 65 63 74 65 29 20 7b 0a  .Grammalecte) {.
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
0d90: 2e 6c 6f 61 64 28 5b 22 47 72 61 6d 6d 61 6c 65  .load(["Grammale
0da0: 63 74 65 22 5d 29 3b 0a 20 20 20 20 20 20 20 20  cte"]);.        
0db0: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  }.        return
0dc0: 20 74 68 69 73 2e 5f 6f 47 63 65 3b 0a 20 20 20   this._oGce;.   
0dd0: 20 7d 0a 0a 20 20 20 20 67 72 61 6d 6d 61 28 73   }..    gramma(s
0de0: 54 65 78 74 29 7b 0a 20 20 20 20 20 20 20 20 69  Text){.        i
0df0: 66 20 28 21 74 68 69 73 2e 69 73 49 6e 69 74 2e  f (!this.isInit.
0e00: 47 72 61 6d 6d 61 6c 65 63 74 65 29 20 7b 0a 20  Grammalecte) {. 
0e10: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
0e20: 6c 6f 61 64 28 5b 22 47 72 61 6d 6d 61 6c 65 63  load(["Grammalec
0e30: 74 65 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d  te"]);.        }
0e40: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
0e50: 41 72 72 61 79 2e 66 72 6f 6d 28 74 68 69 73 2e  Array.from(this.
0e60: 5f 6f 47 63 65 2e 70 61 72 73 65 28 73 54 65 78  _oGce.parse(sTex
0e70: 74 2c 20 74 68 69 73 2e 73 4c 61 6e 67 43 6f 64  t, this.sLangCod
0e80: 65 29 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  e));.    }..    
0e90: 67 65 74 47 63 65 4f 70 74 69 6f 6e 73 20 28 29  getGceOptions ()
0ea0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21   {.        if (!
0eb0: 74 68 69 73 2e 69 73 49 6e 69 74 2e 47 72 61 6d  this.isInit.Gram
0ec0: 6d 61 6c 65 63 74 65 29 20 7b 0a 20 20 20 20 20  malecte) {.     
0ed0: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64         this.load
0ee0: 28 5b 22 47 72 61 6d 6d 61 6c 65 63 74 65 22 5d  (["Grammalecte"]
0ef0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
0f00: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
0f10: 2e 5f 68 65 6c 70 65 72 73 2e 6d 61 70 54 6f 4f  ._helpers.mapToO
0f20: 62 6a 65 63 74 28 74 68 69 73 2e 5f 6f 47 63 65  bject(this._oGce
0f30: 2e 67 65 74 4f 70 74 69 6f 6e 73 28 29 29 3b 0a  .getOptions());.
0f40: 20 20 20 20 7d 0a 0a 20 20 20 20 67 65 74 47 63      }..    getGc
0f50: 65 44 65 66 61 75 6c 74 4f 70 74 69 6f 6e 73 20  eDefaultOptions 
0f60: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20  () {.        if 
0f70: 28 21 74 68 69 73 2e 69 73 49 6e 69 74 2e 47 72  (!this.isInit.Gr
0f80: 61 6d 6d 61 6c 65 63 74 65 29 20 7b 0a 20 20 20  ammalecte) {.   
0f90: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
0fa0: 61 64 28 5b 22 47 72 61 6d 6d 61 6c 65 63 74 65  ad(["Grammalecte
0fb0: 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  "]);.        }. 
0fc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
0fd0: 69 73 2e 5f 68 65 6c 70 65 72 73 2e 6d 61 70 54  is._helpers.mapT
0fe0: 6f 4f 62 6a 65 63 74 28 74 68 69 73 2e 5f 6f 47  oObject(this._oG
0ff0: 63 65 2e 67 65 74 44 65 66 61 75 6c 74 4f 70 74  ce.getDefaultOpt
1000: 69 6f 6e 73 28 29 29 3b 0a 20 20 20 20 7d 0a 0a  ions());.    }..
1010: 20 20 20 20 73 65 74 47 63 65 4f 70 74 69 6f 6e      setGceOption
1020: 73 20 28 64 4f 70 74 69 6f 6e 73 29 20 7b 0a 20  s (dOptions) {. 
1030: 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73         if (!this
1040: 2e 69 73 49 6e 69 74 2e 47 72 61 6d 6d 61 6c 65  .isInit.Grammale
1050: 63 74 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20  cte) {.         
1060: 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b 22 47     this.load(["G
1070: 72 61 6d 6d 61 6c 65 63 74 65 22 5d 29 3b 0a 20  rammalecte"]);. 
1080: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1090: 20 69 66 20 28 21 28 64 4f 70 74 69 6f 6e 73 20   if (!(dOptions 
10a0: 69 6e 73 74 61 6e 63 65 6f 66 20 4d 61 70 29 29  instanceof Map))
10b0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64   {.            d
10c0: 4f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 5f  Options = this._
10d0: 68 65 6c 70 65 72 73 2e 6f 62 6a 65 63 74 54 6f  helpers.objectTo
10e0: 4d 61 70 28 64 4f 70 74 69 6f 6e 73 29 3b 0a 20  Map(dOptions);. 
10f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1100: 20 74 68 69 73 2e 5f 6f 47 63 65 2e 73 65 74 4f   this._oGce.setO
1110: 70 74 69 6f 6e 73 28 64 4f 70 74 69 6f 6e 73 29  ptions(dOptions)
1120: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ;.        return
1130: 20 74 68 69 73 2e 5f 68 65 6c 70 65 72 73 2e 6d   this._helpers.m
1140: 61 70 54 6f 4f 62 6a 65 63 74 28 74 68 69 73 2e  apToObject(this.
1150: 5f 6f 47 63 65 2e 67 65 74 4f 70 74 69 6f 6e 73  _oGce.getOptions
1160: 28 29 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ());.    }..    
1170: 73 65 74 47 63 65 4f 70 74 69 6f 6e 20 28 73 4f  setGceOption (sO
1180: 70 74 4e 61 6d 65 2c 20 62 56 61 6c 75 65 29 20  ptName, bValue) 
1190: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 74  {.        if (!t
11a0: 68 69 73 2e 69 73 49 6e 69 74 2e 47 72 61 6d 6d  his.isInit.Gramm
11b0: 61 6c 65 63 74 65 29 20 7b 0a 20 20 20 20 20 20  alecte) {.      
11c0: 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64 28        this.load(
11d0: 5b 22 47 72 61 6d 6d 61 6c 65 63 74 65 22 5d 29  ["Grammalecte"])
11e0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
11f0: 20 20 20 20 69 66 20 28 73 4f 70 74 4e 61 6d 65      if (sOptName
1200: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1210: 74 68 69 73 2e 5f 6f 47 63 65 2e 73 65 74 4f 70  this._oGce.setOp
1220: 74 69 6f 6e 28 73 4f 70 74 4e 61 6d 65 2c 20 62  tion(sOptName, b
1230: 56 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20  Value);.        
1240: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
1250: 5f 68 65 6c 70 65 72 73 2e 6d 61 70 54 6f 4f 62  _helpers.mapToOb
1260: 6a 65 63 74 28 74 68 69 73 2e 5f 6f 47 63 65 2e  ject(this._oGce.
1270: 67 65 74 4f 70 74 69 6f 6e 73 28 29 29 3b 0a 20  getOptions());. 
1280: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1290: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20   return false;. 
12a0: 20 20 20 7d 0a 0a 20 20 20 20 72 65 73 65 74 47     }..    resetG
12b0: 63 65 4f 70 74 69 6f 6e 73 20 28 29 20 7b 0a 20  ceOptions () {. 
12c0: 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73         if (!this
12d0: 2e 69 73 49 6e 69 74 2e 47 72 61 6d 6d 61 6c 65  .isInit.Grammale
12e0: 63 74 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20  cte) {.         
12f0: 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b 22 47     this.load(["G
1300: 72 61 6d 6d 61 6c 65 63 74 65 22 5d 29 3b 0a 20  rammalecte"]);. 
1310: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1320: 20 74 68 69 73 2e 5f 6f 47 63 65 2e 72 65 73 65   this._oGce.rese
1330: 74 4f 70 74 69 6f 6e 73 28 29 3b 0a 20 20 20 20  tOptions();.    
1340: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
1350: 5f 68 65 6c 70 65 72 73 2e 6d 61 70 54 6f 4f 62  _helpers.mapToOb
1360: 6a 65 63 74 28 74 68 69 73 2e 5f 6f 47 63 65 2e  ject(this._oGce.
1370: 67 65 74 4f 70 74 69 6f 6e 73 28 29 29 3b 0a 20  getOptions());. 
1380: 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 46 6f 6e 63     }..    //Fonc
1390: 74 69 6f 6e 73 20 63 6f 6e 63 65 72 6e 61 6e 74  tions concernant
13a0: 3a 20 47 72 61 70 68 73 70 65 6c 6c 0a 20 20 20  : Graphspell.   
13b0: 20 67 65 74 47 72 61 70 68 73 70 65 6c 6c 28 29   getGraphspell()
13c0: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 74  {.        if (!t
13d0: 68 69 73 2e 69 73 49 6e 69 74 2e 47 72 61 70 68  his.isInit.Graph
13e0: 73 70 65 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20  spell) {.       
13f0: 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b       this.load([
1400: 22 47 72 61 70 68 73 70 65 6c 6c 22 5d 29 3b 0a  "Graphspell"]);.
1410: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
1420: 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6f 53    return this.oS
1430: 70 65 6c 6c 43 68 65 63 6b 65 72 3b 0a 20 20 20  pellChecker;.   
1440: 20 7d 0a 0a 20 20 20 20 73 70 65 6c 6c 50 61 72   }..    spellPar
1450: 61 67 72 61 70 68 28 73 54 65 78 74 2c 20 62 53  agraph(sText, bS
1460: 75 67 67 65 73 74 20 3d 20 74 72 75 65 29 7b 0a  uggest = true){.
1470: 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69          if (!thi
1480: 73 2e 69 73 49 6e 69 74 2e 47 72 61 70 68 73 70  s.isInit.Graphsp
1490: 65 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ell) {.         
14a0: 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b 22 47     this.load(["G
14b0: 72 61 70 68 73 70 65 6c 6c 22 5d 29 3b 0a 20 20  raphspell"]);.  
14c0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
14d0: 69 66 20 28 62 53 75 67 67 65 73 74 29 7b 0a 20  if (bSuggest){. 
14e0: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 6c             let l
14f0: 45 72 72 6f 72 20 3d 20 74 68 69 73 2e 6f 53 70  Error = this.oSp
1500: 65 6c 6c 43 68 65 63 6b 65 72 2e 70 61 72 73 65  ellChecker.parse
1510: 50 61 72 61 67 72 61 70 68 28 73 54 65 78 74 29  Paragraph(sText)
1520: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ;.            fo
1530: 72 20 28 6c 65 74 20 74 6f 6b 65 6e 20 6f 66 20  r (let token of 
1540: 6c 45 72 72 6f 72 29 20 7b 0a 20 20 20 20 20 20  lError) {.      
1550: 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 2e            token.
1560: 61 53 75 67 67 65 73 74 69 6f 6e 73 20 3d 20 74  aSuggestions = t
1570: 68 69 73 2e 73 75 67 67 65 73 74 28 74 6f 6b 65  his.suggest(toke
1580: 6e 2e 73 56 61 6c 75 65 29 3b 0a 20 20 20 20 20  n.sValue);.     
1590: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
15a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6c 45 72 72       return lErr
15b0: 6f 72 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  or;.        } el
15c0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
15d0: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6f 53 70   return this.oSp
15e0: 65 6c 6c 43 68 65 63 6b 65 72 2e 70 61 72 73 65  ellChecker.parse
15f0: 50 61 72 61 67 72 61 70 68 28 73 54 65 78 74 29  Paragraph(sText)
1600: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
1610: 7d 0a 0a 20 20 20 20 73 70 65 6c 6c 28 73 57 6f  }..    spell(sWo
1620: 72 64 29 7b 0a 20 20 20 20 20 20 20 20 69 66 20  rd){.        if 
1630: 28 21 74 68 69 73 2e 69 73 49 6e 69 74 2e 47 72  (!this.isInit.Gr
1640: 61 70 68 73 70 65 6c 6c 29 20 7b 0a 20 20 20 20  aphspell) {.    
1650: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 61          this.loa
1660: 64 28 5b 22 47 72 61 70 68 73 70 65 6c 6c 22 5d  d(["Graphspell"]
1670: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
1680: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
1690: 2e 6f 53 70 65 6c 6c 43 68 65 63 6b 65 72 2e 69  .oSpellChecker.i
16a0: 73 56 61 6c 69 64 28 73 57 6f 72 64 29 3b 0a 20  sValid(sWord);. 
16b0: 20 20 20 7d 0a 0a 20 20 20 20 73 75 67 67 65 73     }..    sugges
16c0: 74 28 73 57 6f 72 64 2c 20 6e 62 4c 69 6d 69 74  t(sWord, nbLimit
16d0: 20 3d 20 31 30 2c 20 62 4d 65 72 67 65 20 3d 20   = 10, bMerge = 
16e0: 74 72 75 65 29 7b 0a 20 20 20 20 20 20 20 20 69  true){.        i
16f0: 66 20 28 21 74 68 69 73 2e 69 73 49 6e 69 74 2e  f (!this.isInit.
1700: 47 72 61 70 68 73 70 65 6c 6c 29 20 7b 0a 20 20  Graphspell) {.  
1710: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
1720: 6f 61 64 28 5b 22 47 72 61 70 68 73 70 65 6c 6c  oad(["Graphspell
1730: 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  "]);.        }. 
1740: 20 20 20 20 20 20 20 6c 65 74 20 6c 53 75 67 67         let lSugg
1750: 65 73 74 20 3d 20 74 68 69 73 2e 6f 53 70 65 6c  est = this.oSpel
1760: 6c 43 68 65 63 6b 65 72 2e 73 75 67 67 65 73 74  lChecker.suggest
1770: 28 73 57 6f 72 64 2c 20 6e 62 4c 69 6d 69 74 29  (sWord, nbLimit)
1780: 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 4d  ;.        if (bM
1790: 65 72 67 65 29 7b 0a 20 20 20 20 20 20 20 20 20  erge){.         
17a0: 20 20 20 6c 65 74 20 6c 53 75 67 67 65 73 74 52     let lSuggestR
17b0: 65 70 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20  ep = [];.       
17c0: 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 6c 53       for (let lS
17d0: 75 67 67 65 73 74 54 6d 70 20 6f 66 20 6c 53 75  uggestTmp of lSu
17e0: 67 67 65 73 74 29 20 7b 0a 20 20 20 20 20 20 20  ggest) {.       
17f0: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65           for (le
1800: 74 20 77 6f 72 64 20 6f 66 20 6c 53 75 67 67 65  t word of lSugge
1810: 73 74 54 6d 70 29 20 7b 0a 20 20 20 20 20 20 20  stTmp) {.       
1820: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 53 75               lSu
1830: 67 67 65 73 74 52 65 70 2e 70 75 73 68 28 77 6f  ggestRep.push(wo
1840: 72 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  rd);.           
1850: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
1860: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
1870: 20 72 65 74 75 72 6e 20 6c 53 75 67 67 65 73 74   return lSuggest
1880: 52 65 70 3b 0a 20 20 20 20 20 20 20 20 7d 20 65  Rep;.        } e
1890: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20  lse {.          
18a0: 20 20 72 65 74 75 72 6e 20 41 72 72 61 79 2e 66    return Array.f
18b0: 72 6f 6d 28 6c 53 75 67 67 65 73 74 29 3b 0a 20  rom(lSuggest);. 
18c0: 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 7d 0a         }..    }.
18d0: 0a 20 20 20 20 6c 65 6d 6d 61 28 73 57 6f 72 64  .    lemma(sWord
18e0: 29 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ){.        if (!
18f0: 74 68 69 73 2e 69 73 49 6e 69 74 2e 47 72 61 70  this.isInit.Grap
1900: 68 73 70 65 6c 6c 29 20 7b 0a 20 20 20 20 20 20  hspell) {.      
1910: 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64 28        this.load(
1920: 5b 22 47 72 61 70 68 73 70 65 6c 6c 22 5d 29 3b  ["Graphspell"]);
1930: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
1940: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6f     return this.o
1950: 53 70 65 6c 6c 43 68 65 63 6b 65 72 2e 67 65 74  SpellChecker.get
1960: 4c 65 6d 6d 61 28 73 57 6f 72 64 29 3b 0a 20 20  Lemma(sWord);.  
1970: 20 20 7d 0a 0a 20 20 20 20 6d 6f 72 70 68 28 73    }..    morph(s
1980: 57 6f 72 64 29 7b 0a 20 20 20 20 20 20 20 20 69  Word){.        i
1990: 66 20 28 21 74 68 69 73 2e 69 73 49 6e 69 74 2e  f (!this.isInit.
19a0: 47 72 61 70 68 73 70 65 6c 6c 29 20 7b 0a 20 20  Graphspell) {.  
19b0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
19c0: 6f 61 64 28 5b 22 47 72 61 70 68 73 70 65 6c 6c  oad(["Graphspell
19d0: 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  "]);.        }. 
19e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
19f0: 69 73 2e 6f 53 70 65 6c 6c 43 68 65 63 6b 65 72  is.oSpellChecker
1a00: 2e 67 65 74 4d 6f 72 70 68 28 73 57 6f 72 64 29  .getMorph(sWord)
1a10: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 46  ;.    }..    //F
1a20: 6f 6e 63 74 69 6f 6e 73 20 63 6f 6e 63 65 72 6e  onctions concern
1a30: 61 6e 74 3a 20 4c 65 78 69 63 6f 67 72 61 70 68  ant: Lexicograph
1a40: 65 72 0a 20 20 20 20 67 65 74 4c 65 78 69 63 6f  er.    getLexico
1a50: 67 72 61 70 68 65 72 28 29 7b 0a 20 20 20 20 20  grapher(){.     
1a60: 20 20 20 69 66 20 28 21 74 68 69 73 2e 69 73 49     if (!this.isI
1a70: 6e 69 74 2e 4c 65 78 69 63 6f 67 72 61 70 68 65  nit.Lexicographe
1a80: 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  r) {.           
1a90: 20 74 68 69 73 2e 6c 6f 61 64 28 5b 22 4c 65 78   this.load(["Lex
1aa0: 69 63 6f 67 72 61 70 68 65 72 22 5d 29 3b 0a 20  icographer"]);. 
1ab0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1ac0: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6f 4c 65   return this.oLe
1ad0: 78 69 63 6f 67 72 61 70 68 65 72 3b 0a 20 20 20  xicographer;.   
1ae0: 20 7d 0a 0a 20 20 20 20 6c 65 78 69 71 75 65 28   }..    lexique(
1af0: 73 54 65 78 74 29 7b 0a 20 20 20 20 20 20 20 20  sText){.        
1b00: 69 66 20 28 21 74 68 69 73 2e 69 73 49 6e 69 74  if (!this.isInit
1b10: 2e 4c 65 78 69 63 6f 67 72 61 70 68 65 72 29 20  .Lexicographer) 
1b20: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
1b30: 69 73 2e 6c 6f 61 64 28 5b 22 4c 65 78 69 63 6f  is.load(["Lexico
1b40: 67 72 61 70 68 65 72 22 5d 29 3b 0a 20 20 20 20  grapher"]);.    
1b50: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65      }.        re
1b60: 74 75 72 6e 20 74 68 69 73 2e 6f 4c 65 78 69 63  turn this.oLexic
1b70: 6f 67 72 61 70 68 65 72 2e 67 65 74 4c 69 73 74  ographer.getList
1b80: 4f 66 54 6f 6b 65 6e 73 52 65 64 75 63 28 73 54  OfTokensReduc(sT
1b90: 65 78 74 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  ext);.    }..   
1ba0: 20 2f 2f 46 6f 6e 63 74 69 6f 6e 73 20 63 6f 6e   //Fonctions con
1bb0: 63 65 72 6e 61 6e 74 3a 20 54 65 78 74 46 6f 72  cernant: TextFor
1bc0: 6d 61 74 74 65 72 0a 20 20 20 20 67 65 74 54 65  matter.    getTe
1bd0: 78 74 46 6f 72 6d 61 74 74 65 72 28 29 7b 0a 20  xtFormatter(){. 
1be0: 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73         if (!this
1bf0: 2e 69 73 49 6e 69 74 2e 54 65 78 74 46 6f 72 6d  .isInit.TextForm
1c00: 61 74 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20  atter) {.       
1c10: 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b       this.load([
1c20: 22 54 65 78 74 46 6f 72 6d 61 74 74 65 72 22 5d  "TextFormatter"]
1c30: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
1c40: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
1c50: 2e 6f 54 65 78 74 46 6f 72 6d 61 74 74 65 72 3b  .oTextFormatter;
1c60: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 66 6f 72 6d  .    }..    form
1c70: 61 74 54 65 78 74 28 73 54 65 78 74 29 7b 0a 20  atText(sText){. 
1c80: 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73         if (!this
1c90: 2e 69 73 49 6e 69 74 2e 54 65 78 74 46 6f 72 6d  .isInit.TextForm
1ca0: 61 74 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20  atter) {.       
1cb0: 20 20 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b       this.load([
1cc0: 22 54 65 78 74 46 6f 72 6d 61 74 74 65 72 22 5d  "TextFormatter"]
1cd0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20  );.        }.   
1ce0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
1cf0: 2e 6f 54 65 78 74 46 6f 72 6d 61 74 74 65 72 2e  .oTextFormatter.
1d00: 66 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74  formatText(sText
1d10: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65  );.    }..    se
1d20: 74 54 66 4f 70 74 69 6f 6e 73 28 64 4f 70 74 69  tTfOptions(dOpti
1d30: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69  ons) {.        i
1d40: 66 20 28 21 74 68 69 73 2e 69 73 49 6e 69 74 2e  f (!this.isInit.
1d50: 54 65 78 74 46 6f 72 6d 61 74 74 65 72 29 20 7b  TextFormatter) {
1d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1d70: 73 2e 6c 6f 61 64 28 5b 22 54 65 78 74 46 6f 72  s.load(["TextFor
1d80: 6d 61 74 74 65 72 22 5d 29 3b 0a 20 20 20 20 20  matter"]);.     
1d90: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68 69     }.        thi
1da0: 73 2e 6f 54 65 78 74 46 6f 72 6d 61 74 74 65 72  s.oTextFormatter
1db0: 2e 73 65 74 4f 70 74 69 6f 6e 73 28 64 4f 70 74  .setOptions(dOpt
1dc0: 69 6f 6e 73 29 3b 0a 20 20 20 20 20 20 20 20 72  ions);.        r
1dd0: 65 74 75 72 6e 20 74 68 69 73 2e 5f 68 65 6c 70  eturn this._help
1de0: 65 72 73 2e 6d 61 70 54 6f 4f 62 6a 65 63 74 28  ers.mapToObject(
1df0: 74 68 69 73 2e 6f 54 65 78 74 46 6f 72 6d 61 74  this.oTextFormat
1e00: 74 65 72 2e 67 65 74 4f 70 74 69 6f 6e 73 28 29  ter.getOptions()
1e10: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65  );.    }..    se
1e20: 74 54 66 4f 70 74 69 6f 6e 28 73 4f 70 74 4e 61  tTfOption(sOptNa
1e30: 6d 65 2c 20 62 56 61 6c 75 65 29 20 7b 0a 20 20  me, bValue) {.  
1e40: 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e        if (!this.
1e50: 69 73 49 6e 69 74 2e 54 65 78 74 46 6f 72 6d 61  isInit.TextForma
1e60: 74 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20  tter) {.        
1e70: 20 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b 22      this.load(["
1e80: 54 65 78 74 46 6f 72 6d 61 74 74 65 72 22 5d 29  TextFormatter"])
1e90: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
1ea0: 20 20 20 20 69 66 20 28 73 4f 70 74 4e 61 6d 65      if (sOptName
1eb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1ec0: 6c 65 74 20 6f 70 74 69 6f 6e 73 54 46 20 3d 20  let optionsTF = 
1ed0: 74 68 69 73 2e 6f 54 65 78 74 46 6f 72 6d 61 74  this.oTextFormat
1ee0: 74 65 72 2e 67 65 74 4f 70 74 69 6f 6e 73 28 29  ter.getOptions()
1ef0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 70  ;.            op
1f00: 74 69 6f 6e 73 54 46 2e 73 65 74 28 73 4f 70 74  tionsTF.set(sOpt
1f10: 4e 61 6d 65 2c 20 62 56 61 6c 75 65 29 3b 0a 20  Name, bValue);. 
1f20: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f30: 6e 20 74 68 69 73 2e 5f 68 65 6c 70 65 72 73 2e  n this._helpers.
1f40: 6d 61 70 54 6f 4f 62 6a 65 63 74 28 74 68 69 73  mapToObject(this
1f50: 2e 6f 54 65 78 74 46 6f 72 6d 61 74 74 65 72 2e  .oTextFormatter.
1f60: 67 65 74 4f 70 74 69 6f 6e 73 28 29 29 3b 0a 20  getOptions());. 
1f70: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
1f80: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20   return false;. 
1f90: 20 20 20 7d 0a 0a 20 20 20 20 72 65 73 65 74 54     }..    resetT
1fa0: 66 4f 70 74 69 6f 6e 73 28 29 20 7b 0a 20 20 20  fOptions() {.   
1fb0: 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 69       if (!this.i
1fc0: 73 49 6e 69 74 2e 54 65 78 74 46 6f 72 6d 61 74  sInit.TextFormat
1fd0: 74 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ter) {.         
1fe0: 20 20 20 74 68 69 73 2e 6c 6f 61 64 28 5b 22 54     this.load(["T
1ff0: 65 78 74 46 6f 72 6d 61 74 74 65 72 22 5d 29 3b  extFormatter"]);
2000: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
2010: 20 20 20 6c 65 74 20 6f 70 74 69 6f 6e 73 54 46     let optionsTF
2020: 20 3d 20 74 68 69 73 2e 6f 54 65 78 74 46 6f 72   = this.oTextFor
2030: 6d 61 74 74 65 72 2e 67 65 74 44 65 66 61 75 6c  matter.getDefaul
2040: 74 4f 70 74 69 6f 6e 73 28 29 3b 0a 20 20 20 20  tOptions();.    
2050: 20 20 20 20 74 68 69 73 2e 6f 54 65 78 74 46 6f      this.oTextFo
2060: 72 6d 61 74 74 65 72 2e 73 65 74 4f 70 74 69 6f  rmatter.setOptio
2070: 6e 73 28 6f 70 74 69 6f 6e 73 54 46 29 3b 0a 20  ns(optionsTF);. 
2080: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
2090: 69 73 2e 5f 68 65 6c 70 65 72 73 2e 6d 61 70 54  is._helpers.mapT
20a0: 6f 4f 62 6a 65 63 74 28 74 68 69 73 2e 6f 54 65  oObject(this.oTe
20b0: 78 74 46 6f 72 6d 61 74 74 65 72 2e 67 65 74 4f  xtFormatter.getO
20c0: 70 74 69 6f 6e 73 28 29 29 3b 0a 20 20 20 20 7d  ptions());.    }
20d0: 0a 0a 20 20 20 20 2f 2f 66 6f 6e 63 74 69 6f 6e  ..    //fonction
20e0: 73 20 63 6f 6e 63 65 72 6e 61 6e 74 20 70 6c 75  s concernant plu
20f0: 73 73 69 65 75 72 73 20 70 61 72 74 69 65 73 0a  ssieurs parties.
2100: 20 20 20 20 76 65 72 69 66 50 61 72 61 67 72 61      verifParagra
2110: 70 68 28 73 54 65 78 74 2c 20 62 53 75 67 67 65  ph(sText, bSugge
2120: 73 74 20 3d 20 74 72 75 65 29 7b 0a 20 20 20 20  st = true){.    
2130: 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 69 73      if (!this.is
2140: 49 6e 69 74 2e 47 72 61 6d 6d 61 6c 65 63 74 65  Init.Grammalecte
2150: 20 7c 7c 20 21 74 68 69 73 2e 69 73 49 6e 69 74   || !this.isInit
2160: 2e 47 72 61 70 68 73 70 65 6c 6c 29 20 7b 0a 20  .Graphspell) {. 
2170: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2180: 6c 6f 61 64 28 5b 22 47 72 61 6d 6d 61 6c 65 63  load(["Grammalec
2190: 74 65 22 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d  te"]);.        }
21a0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
21b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 47  {.            lG
21c0: 72 61 6d 6d 61 72 45 72 72 6f 72 73 3a 20 41 72  rammarErrors: Ar
21d0: 72 61 79 2e 66 72 6f 6d 28 74 68 69 73 2e 5f 6f  ray.from(this._o
21e0: 47 63 65 2e 70 61 72 73 65 28 73 54 65 78 74 2c  Gce.parse(sText,
21f0: 20 74 68 69 73 2e 73 4c 61 6e 67 43 6f 64 65 29   this.sLangCode)
2200: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  ),.            l
2210: 53 70 65 6c 6c 69 6e 67 45 72 72 6f 72 73 3a 20  SpellingErrors: 
2220: 74 68 69 73 2e 73 70 65 6c 6c 50 61 72 61 67 72  this.spellParagr
2230: 61 70 68 28 73 54 65 78 74 2c 20 62 53 75 67 67  aph(sText, bSugg
2240: 65 73 74 29 0a 20 20 20 20 20 20 20 20 7d 3b 0a  est).        };.
2250: 20 20 20 20 7d 0a 0a 7d 0a 0a 69 66 20 28 74 79      }..}..if (ty
2260: 70 65 6f 66 20 65 78 70 6f 72 74 73 20 21 3d 3d  peof exports !==
2270: 20 22 75 6e 64 65 66 69 6e 65 64 22 29 20 7b 0a   "undefined") {.
2280: 20 20 20 20 65 78 70 6f 72 74 73 2e 47 72 61 6d      exports.Gram
2290: 6d 61 72 43 68 65 63 6b 65 72 20 3d 20 47 72 61  marChecker = Gra
22a0: 6d 6d 61 72 43 68 65 63 6b 65 72 3b 0a 7d 0a     mmarChecker;.}.