Grammalecte  Diff

Differences From Artifact [d23b81aee3]:

To Artifact [f51bd17e6f]:


363
364
365
366
367
368
369
370

371
372
373
374
375
376
377
363
364
365
366
367
368
369

370
371
372
373
374
375
376
377







-
+







                }
            }
        }
        if (nDist > oSuggResult.nDistLimit) {
            return;
        }
        let cCurrent = sRemain.slice(0, 1);
        for (let [cChar, jAddr] of this._getCharArcs(iAddr)) {
        for (let [cChar, jAddr] of this._getCharArcs(iAddr, cCurrent)) {
            if (char_player.d1to1.gl_get(cCurrent, cCurrent).indexOf(cChar) != -1) {
                this._suggest(oSuggResult, sRemain.slice(1), nMaxSwitch, nMaxDel, nMaxHardRepl, nMaxJump, nDist, nDeep+1, jAddr, sNewWord+cChar);
            }
            else if (!bAvoidLoop) {
                if (nMaxHardRepl  &&  this.isNgramsOK(cChar+sRemain.slice(1,2))) {
                    this._suggest(oSuggResult, sRemain.slice(1), nMaxSwitch, nMaxDel, nMaxHardRepl-1, nMaxJump, nDist+1, nDeep+1, jAddr, sNewWord+cChar, true);
                }
425
426
427
428
429
430
431
432

433

434
435

436
437









438
439
440
441
442
443
444
425
426
427
428
429
430
431

432
433
434
435
436
437


438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453







-
+

+


+
-
-
+
+
+
+
+
+
+
+
+







        }
        if (!this.a2grams) {
            return true;
        }
        return this.a2grams.has(sChars);
    }

    * _getCharArcs (iAddr) {
    * _getCharArcs (iAddr, cChar="") {
        // generator: yield all chars and addresses from node at address <iAddr>
        let lStack = [];
        for (let [nVal, jAddr] of this._getArcs(iAddr)) {
            if (nVal <= this.nChar) {
                if (char_player.d1to1.gl_get(cChar, cChar).indexOf(this.dCharVal.get(nVal)) != -1) {
                yield [this.dCharVal.get(nVal), jAddr];
            }
                    yield [this.dCharVal.get(nVal), jAddr];
                }
                else {
                    lStack.push([this.dCharVal.get(nVal), jAddr]);
                }
            }
        }
        while (lStack.length > 0) {
            yield lStack.shift();
        }
    }

    * _getSimilarCharArcs (cChar, iAddr) {
        // generator: yield similar char of <cChar> and address of the following node
        for (let c of char_player.d1to1.gl_get(cChar, [cChar])) {
            if (this.dChar.has(c)) {