Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -91,10 +91,14 @@ if (!bParagraph) { return gc_rules.lSentenceRules; } return gc_rules.lParagraphRules; }, + + getIgnoreRules: function (bParagraph) { + return gc_rules._aIgnoredRules; + }, ignoreRule: function (sRuleId) { _aIgnoredRules.add(sRuleId); }, @@ -1415,10 +1419,11 @@ exports._zEndOfSentence = gc_engine._zEndOfSentence; exports._zBeginOfParagraph = gc_engine._zBeginOfParagraph; exports._zEndOfParagraph = gc_engine._zEndOfParagraph; exports.getSentenceBoundaries = gc_engine.getSentenceBoundaries; // rules + exports.getIgnoreRules = gc_engine.getIgnoreRules; exports.ignoreRule = gc_engine.ignoreRule; exports.resetIgnoreRules = gc_engine.resetIgnoreRules; exports.reactivateRule = gc_engine.reactivateRule; exports.listRules = gc_engine.listRules; exports.getRules = gc_engine.getRules; Index: gc_lang/fr/nodejs/cli/bin/gramma-cli.js ================================================================== --- gc_lang/fr/nodejs/cli/bin/gramma-cli.js +++ gc_lang/fr/nodejs/cli/bin/gramma-cli.js @@ -109,10 +109,16 @@ short: "", arg: "+/-name", description: "Définit les options à utiliser par le correcteur grammatical.", execute: "" }, + gcerule: { + short: "", + arg: "+/-name", + description: "Définit les règles à exclure par le correcteur grammatical.", + execute: "" + }, tfoption: { short: "", arg: "+/-name", description: "Définit les options à utiliser par le formateur de texte.", execute: "" @@ -159,11 +165,11 @@ } function repToText(oRep) { //console.log(oRep); let repText = ""; - for (const action of ["json", "perf", "gceoption", "tfoption"]) { + for (const action of ["json", "perf", "gceoption", "tfoption", "gcerule"]) { if (action in oRep) { repText += toTitle(action) + " " + oRep[action]; } } @@ -295,11 +301,11 @@ numRep1++; if (numRep1 == replength) { ascii1 = "└"; ascii1a = " "; } - repText += "\n " + ascii1 + " " + gramma.nStart + "->" + gramma.nEnd + " " + gramma.sMessage; + repText += "\n " + ascii1 + " " + gramma.nStart + "->" + gramma.nEnd + " [" + gramma.sRuleId + "]\n " + ascii1a + " " + gramma.sMessage; ascii2 = "├"; numRep2 = 0; for (let suggestion of gramma.aSuggestions) { numRep2++; if (numRep2 == gramma.aSuggestions.length) { @@ -408,13 +414,13 @@ repPreference[action] = getArgVal(aArg, [action]); repAction[action] = repPreference[action] ? "ON" : "OFF"; } } - for (const action of ["gceoption", "tfoption"]) { + for (const action of ["gceoption", "tfoption", "gcerule"]) { if (getArg(aArg, [action])) { - let sFonction = action == "gceoption" ? "GceOption" : "TfOption"; + let sFonction = (action == "gceoption") ? "GceOption" : (action == "tfoption") ? "TfOption" : "GceIgnoreRule"; let sOpt = sText.split(" "); if (sOpt[0] == "reset") { oGrammarChecker["reset" + sFonction + "s"](); repAction[action] = "reset"; } else { Index: gc_lang/fr/nodejs/cli/readme.md ================================================================== --- gc_lang/fr/nodejs/cli/readme.md +++ gc_lang/fr/nodejs/cli/readme.md @@ -27,10 +27,11 @@ | spell | mot | Vérifie l’existence d'un mot. | | suggest | mot | Suggestion des orthographes possible d’un mot. | | morph | mot | Affiche les informations pour un mot. | | lemma | mot | Donne le lemme d’un mot. | | gceoption | +/-name | Définit les options à utiliser par le correcteur grammatical. | +| gcerule | +/-name | Définit les règles à exclure par le correcteur grammatical. | | tfoption | +/-name | Définit les options à utiliser par le formateur de texte. | ## Client interactif Le mode interactif est un mode question/réponse. Pour le lancer vous devez saisir `gramma-cli -i`. Index: gc_lang/fr/nodejs/core/api.js ================================================================== --- gc_lang/fr/nodejs/core/api.js +++ gc_lang/fr/nodejs/core/api.js @@ -140,10 +140,55 @@ this.load(["Grammalecte"]); } this._oGce.resetOptions(); return this._helpers.mapToObject(this._oGce.getOptions()); } + + getGceRules (bParagraph) { + if (!this.isInit.Grammalecte) { + this.load(["Grammalecte"]); + } + return this._oGce.getRules(bParagraph); + } + + getGceIgnoreRules () { + if (!this.isInit.Grammalecte) { + this.load(["Grammalecte"]); + } + return Array.from(this._oGce.getIgnoreRules()); + } + + setGceIgnoreRules (dRules) { + if (!this.isInit.Grammalecte) { + this.load(["Grammalecte"]); + } + if (!(dRules instanceof Set)) { + dRules = new Set(dRules); + } + this._oGce._aIgnoredRules = dRules; + return Array.from(this._oGce.getIgnoreRules()); + } + + setGceIgnoreRule (sRuleId, bValue) { + if (!this.isInit.Grammalecte) { + this.load(["Grammalecte"]); + } + if (bValue){ //Add + this._oGce.ignoreRule(sRuleId); + } else { //Delete + this._oGce.reactivateRule(sRuleId); + } + return Array.from(this._oGce.getIgnoreRules()); + } + + resetGceIgnoreRules () { + if (!this.isInit.Grammalecte) { + this.load(["Grammalecte"]); + } + this._oGce.resetIgnoreRules(); + return Array.from(this._oGce.getIgnoreRules()); + } //Fonctions concernant: Graphspell getGraphspell(){ if (!this.isInit.Graphspell) { this.load(["Graphspell"]);