Replace rule by name with new function & options. :param ruleName: rule name to replace. :param fn: new rule function. :param options: new rule options (not mandatory). :raises: KeyError if name not found
(
self, ruleName: str, fn: RuleFuncTv, options: RuleOptionsType | None = None
)
| 108 | self.__cache__[chain].append(rule.fn) |
| 109 | |
| 110 | def at( |
| 111 | self, ruleName: str, fn: RuleFuncTv, options: RuleOptionsType | None = None |
| 112 | ) -> None: |
| 113 | """Replace rule by name with new function & options. |
| 114 | |
| 115 | :param ruleName: rule name to replace. |
| 116 | :param fn: new rule function. |
| 117 | :param options: new rule options (not mandatory). |
| 118 | :raises: KeyError if name not found |
| 119 | """ |
| 120 | index = self.__find__(ruleName) |
| 121 | options = options or {} |
| 122 | if index == -1: |
| 123 | raise KeyError(f"Parser rule not found: {ruleName}") |
| 124 | self.__rules__[index].fn = fn |
| 125 | self.__rules__[index].alt = options.get("alt", []) |
| 126 | self.__cache__ = None |
| 127 | |
| 128 | def before( |
| 129 | self, |