Overview
Comment: | [build][core] hability to set limits for underlining to the other side of selected tokens |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core | build | rg |
Files: | files | file ages | folders |
SHA3-256: |
2ee32e3e27651a76818d559d9ba6c450 |
User & Date: | olr on 2018-07-12 09:28:43 |
Other Links: | branch diff | manifest | tags |
Context
2018-07-12
| ||
11:31 | [fr] conversion: regex rules -> graph rules check-in: 0a7fd06f07 user: olr tags: fr, rg | |
09:28 | [build][core] hability to set limits for underlining to the other side of selected tokens check-in: 2ee32e3e27 user: olr tags: core, build, rg | |
2018-07-11
| ||
17:09 | [fr] correction de quelques tests check-in: 5b6de299a1 user: olr tags: fr, rg | |
Changes
Modified compile_rules_graph.py from [75ffc0f9db] to [2c76153ce9].
︙ | ︙ | |||
121 122 123 124 125 126 127 128 129 130 131 132 133 134 | sActionId = sRuleName + "__b" + str(iActionBlock) + "_a" + str(iAction) + "_" + str(len(lToken)) aAction = createAction(sActionId, sAction, nPriority, len(lToken), dPos) if aAction: dACTIONS[sActionId] = aAction lResult = list(lToken) lResult.extend(["##"+str(iLine), sActionId]) yield lResult def changeReferenceToken (sText, dPos): "change group reference in <sText> with values in <dPos>" for i in range(len(dPos), 0, -1): sText = sText.replace("\\"+str(i), "\\"+str(dPos[i])) return sText | > > | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | sActionId = sRuleName + "__b" + str(iActionBlock) + "_a" + str(iAction) + "_" + str(len(lToken)) aAction = createAction(sActionId, sAction, nPriority, len(lToken), dPos) if aAction: dACTIONS[sActionId] = aAction lResult = list(lToken) lResult.extend(["##"+str(iLine), sActionId]) yield lResult else: print(" # Error on action at line:", iLine) def changeReferenceToken (sText, dPos): "change group reference in <sText> with values in <dPos>" for i in range(len(dPos), 0, -1): sText = sText.replace("\\"+str(i), "\\"+str(dPos[i])) return sText |
︙ | ︙ | |||
154 155 156 157 158 159 160 | # Option sOption = False m = re.match("/(\\w+)/", sAction) if m: sOption = m.group(1) sAction = sAction[m.end():].strip() # valid action? | | < > > > | > > > | | 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | # Option sOption = False m = re.match("/(\\w+)/", sAction) if m: sOption = m.group(1) sAction = sAction[m.end():].strip() # valid action? m = re.search(r"(?P<action>[-~=/>])(?P<start>\d+\.?|)(?P<end>:\.?\d+|)>>", sAction) if not m: print(" # Error. No action found at: ", sActionId) return None # Condition sCondition = sAction[:m.start()].strip() if sCondition: sCondition = prepareFunction(sCondition) sCondition = changeReferenceToken(sCondition, dPos) dFUNCTIONS["_g_c_"+sActionId] = sCondition sCondition = "_g_c_"+sActionId else: sCondition = "" # Action cAction = m.group("action") sAction = sAction[m.end():].strip() sAction = changeReferenceToken(sAction, dPos) if not m.group("start"): iStartAction = 1 iEndAction = 0 else: if cAction != "-" and (m.group("start").endswith(".") or m.group("end").startswith(":.")): print(" # Error. Wrong selection on tokens.", sActionId) return None iStartAction = int(m.group("start")) if not m.group("start").endswith(".") else int("-"+m.group("start")[:-1]) if not m.group("end"): iEndAction = iStartAction else: iEndAction = int(m.group("end")[1:]) if not m.group("end").startswith(":.") else int("-" + m.group("end")[2:]) if dPos and m.group("start"): try: iStartAction = dPos[iStartAction] if iEndAction: iEndAction = dPos[iEndAction] except: print("# Error. Wrong groups in: " + sActionId) |
︙ | ︙ | |||
258 259 260 261 262 263 264 | if "define" in sAction and not re.search(r"define\(\\\d+ *, *\[.*\] *\)", sAction): print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings") sAction = prepareFunction(sAction) dFUNCTIONS["_g_d_"+sActionId] = sAction sAction = "_g_d_"+sActionId return [sOption, sCondition, cAction, sAction] else: | | | 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | if "define" in sAction and not re.search(r"define\(\\\d+ *, *\[.*\] *\)", sAction): print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings") sAction = prepareFunction(sAction) dFUNCTIONS["_g_d_"+sActionId] = sAction sAction = "_g_d_"+sActionId return [sOption, sCondition, cAction, sAction] else: print(" # Unknown action.", sActionId) return None def make (lRule, dDef, sLang, bJavaScript): "compile rules, returns a dictionary of values" # for clarity purpose, don’t create any file here |
︙ | ︙ |
Modified gc_core/py/lang_core/gc_engine.py from [1a91db6e13] to [b5abe0de9e].
︙ | ︙ | |||
747 748 749 750 751 752 753 | # Sentence Tag [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ] # Test [ option, condition, ">", "" ] if not sOption or dOptions.get(sOption, False): bCondMemo = not sFuncCond or globals()[sFuncCond](self.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, self.dTags, self.sSentence, self.sSentence0) if bCondMemo: if cActionType == "-": # grammar error | | | | | | 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 | # Sentence Tag [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ] # Test [ option, condition, ">", "" ] if not sOption or dOptions.get(sOption, False): bCondMemo = not sFuncCond or globals()[sFuncCond](self.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, self.dTags, self.sSentence, self.sSentence0) if bCondMemo: if cActionType == "-": # grammar error nTokenErrorStart = nTokenOffset + abs(eAct[0]) if "bImmune" not in self.lToken[nTokenErrorStart]: nTokenErrorEnd = (nTokenOffset + abs(eAct[1])) if eAct[1] else nLastToken nErrorStart = self.nOffsetWithinParagraph + (self.lToken[nTokenErrorStart]["nStart"] if eAct[0] >= 0 else self.lToken[nTokenErrorStart]["nStart"]) nErrorEnd = self.nOffsetWithinParagraph + (self.lToken[nTokenErrorEnd]["nEnd"] if eAct[1] >= 0 else self.lToken[nTokenErrorEnd]["nStart"]) if nErrorStart not in self.dError or eAct[2] > dPriority.get(nErrorStart, -1): self.dError[nErrorStart] = self._createError(sWhat, nTokenOffset, nTokenErrorStart, nErrorStart, nErrorEnd, sLineId, sRuleId, True, eAct[3], eAct[4], bShowRuleId, "notype", bContext) dPriority[nErrorStart] = eAct[2] if bDebug: print(" NEW_ERROR:", self.dError[nErrorStart], "\n ", dRule[sRuleId]) elif cActionType == "~": # text processor |
︙ | ︙ |
Modified gc_lang/fr/rules.grx from [f0f36d47ef] to [1d6e0a2575].
︙ | ︙ | |||
2692 2693 2694 2695 2696 2697 2698 | !!!! Apostrophe manquante (2) !! __typo_apostrophe_manquante_audace__ <start> [L|D|S|N|C|J|M|T|Ç] ~^[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ] | | | 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 | !!!! Apostrophe manquante (2) !! __typo_apostrophe_manquante_audace__ <start> [L|D|S|N|C|J|M|T|Ç] ~^[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ] <<- /mapos/ space_after(\2, 1, 1) -2:.3>> =\2+"’" # Il manque peut-être une apostrophe. TEST: __mapos__ {{L }}opinion des gens, elle s’en moquait. !!!! A / À: accentuation la préposition en début de phrase !! |
︙ | ︙ |