Index: grammalecte-cli.py ================================================================== --- grammalecte-cli.py +++ grammalecte-cli.py @@ -6,15 +6,17 @@ import sys import os.path import argparse import json +import itertools import re import traceback import grammalecte import grammalecte.text as txt +import grammalecte.graphspell.str_transform as strt from grammalecte.graphspell.echo import echo _EXAMPLE = "Quoi ? Racontes ! Racontes-moi ! Bon sangg, parles ! Oui. Il y a des menteur partout. " \ "Je suit sidéré par la brutales arrogance de cette homme-là. Quelle salopard ! Un escrocs de la pire espece. " \ @@ -25,11 +27,12 @@ any_text grammar checking ?word1 [word2] ... words analysis !word spelling suggestion >word draw path of word in the word graph =[filter1][=[filter2]] show entries which fit to filters (filter1 for word, filter2 for morphology) - $some_text show sentences and tokens of text + ≠word|word|… show distance between words + $some_text show sentences and tokens of text Other commands: /help /h show this text /lopt /lo list options /lrules [pattern] /lr list rules @@ -290,10 +293,15 @@ else: sFlexPattern = sSearch sTagsPattern = "" for aRes in oSpellChecker.select(sFlexPattern, sTagsPattern): echo("{:<30} {:<30} {}".format(*aRes)) + elif sText.startswith("≠"): + lWords = sText[1:].split("|") + for s1, s2 in itertools.combinations(lWords, 2): + nDist = strt.distanceDamerauLevenshtein(s1, s2) + print(f"{s1} ≠ {s2}: {nDist}") elif sText.startswith("/o+ "): oGrammarChecker.gce.setOptions({ opt:True for opt in sText[3:].strip().split() if opt in oGrammarChecker.gce.getOptions() }) echo("done") elif sText.startswith("/o- "): oGrammarChecker.gce.setOptions({ opt:False for opt in sText[3:].strip().split() if opt in oGrammarChecker.gce.getOptions() })