Skip to content

Commit 755b0a0

Browse files
committed
Add RuleOptionsType
1 parent a4d251d commit 755b0a0

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

markdown_it/ruler.py

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Ruler
1919

2020
from collections.abc import Callable, Iterable
2121
from dataclasses import dataclass, field
22-
from typing import TYPE_CHECKING
22+
from typing import TYPE_CHECKING, TypedDict
2323

2424
from markdown_it._compat import DATACLASS_KWARGS
2525

@@ -51,7 +51,11 @@ def src(self, value: str) -> None:
5151
# arguments may or may not exist, based on the rule's type (block,
5252
# core, inline). Return type is either `None` or `bool` based on the
5353
# rule's type.
54-
RuleFunc = Callable
54+
RuleFunc = Callable # type: ignore
55+
56+
57+
class RuleOptionsType(TypedDict, total=False):
58+
alt: list[str]
5559

5660

5761
@dataclass(**DATACLASS_KWARGS)
@@ -97,7 +101,9 @@ def __compile__(self) -> None:
97101
continue
98102
self.__cache__[chain].append(rule.fn)
99103

100-
def at(self, ruleName: str, fn: RuleFunc, options=None):
104+
def at(
105+
self, ruleName: str, fn: RuleFunc, options: RuleOptionsType | None = None
106+
) -> None:
101107
"""Replace rule by name with new function & options.
102108
103109
:param ruleName: rule name to replace.
@@ -113,7 +119,13 @@ def at(self, ruleName: str, fn: RuleFunc, options=None):
113119
self.__rules__[index].alt = options.get("alt", [])
114120
self.__cache__ = None
115121

116-
def before(self, beforeName: str, ruleName: str, fn: RuleFunc, options=None):
122+
def before(
123+
self,
124+
beforeName: str,
125+
ruleName: str,
126+
fn: RuleFunc,
127+
options: RuleOptionsType | None = None,
128+
) -> None:
117129
"""Add new rule to chain before one with given name.
118130
119131
:param beforeName: new rule will be added before this one.
@@ -129,7 +141,13 @@ def before(self, beforeName: str, ruleName: str, fn: RuleFunc, options=None):
129141
self.__rules__.insert(index, Rule(ruleName, True, fn, options.get("alt", [])))
130142
self.__cache__ = None
131143

132-
def after(self, afterName: str, ruleName: str, fn: RuleFunc, options=None):
144+
def after(
145+
self,
146+
afterName: str,
147+
ruleName: str,
148+
fn: RuleFunc,
149+
options: RuleOptionsType | None = None,
150+
) -> None:
133151
"""Add new rule to chain after one with given name.
134152
135153
:param afterName: new rule will be added after this one.
@@ -147,7 +165,9 @@ def after(self, afterName: str, ruleName: str, fn: RuleFunc, options=None):
147165
)
148166
self.__cache__ = None
149167

150-
def push(self, ruleName: str, fn: RuleFunc, options=None):
168+
def push(
169+
self, ruleName: str, fn: RuleFunc, options: RuleOptionsType | None = None
170+
) -> None:
151171
"""Push new rule to the end of chain.
152172
153173
:param ruleName: new rule will be added to the end of chain.
@@ -158,7 +178,9 @@ def push(self, ruleName: str, fn: RuleFunc, options=None):
158178
self.__rules__.append(Rule(ruleName, True, fn, (options or {}).get("alt", [])))
159179
self.__cache__ = None
160180

161-
def enable(self, names: str | Iterable[str], ignoreInvalid: bool = False):
181+
def enable(
182+
self, names: str | Iterable[str], ignoreInvalid: bool = False
183+
) -> list[str]:
162184
"""Enable rules with given names.
163185
164186
:param names: name or list of rule names to enable.
@@ -168,7 +190,7 @@ def enable(self, names: str | Iterable[str], ignoreInvalid: bool = False):
168190
"""
169191
if isinstance(names, str):
170192
names = [names]
171-
result = []
193+
result: list[str] = []
172194
for name in names:
173195
idx = self.__find__(name)
174196
if (idx < 0) and ignoreInvalid:
@@ -180,7 +202,9 @@ def enable(self, names: str | Iterable[str], ignoreInvalid: bool = False):
180202
self.__cache__ = None
181203
return result
182204

183-
def enableOnly(self, names: str | Iterable[str], ignoreInvalid: bool = False):
205+
def enableOnly(
206+
self, names: str | Iterable[str], ignoreInvalid: bool = False
207+
) -> list[str]:
184208
"""Enable rules with given names, and disable everything else.
185209
186210
:param names: name or list of rule names to enable.
@@ -192,9 +216,11 @@ def enableOnly(self, names: str | Iterable[str], ignoreInvalid: bool = False):
192216
names = [names]
193217
for rule in self.__rules__:
194218
rule.enabled = False
195-
self.enable(names, ignoreInvalid)
219+
return self.enable(names, ignoreInvalid)
196220

197-
def disable(self, names: str | Iterable[str], ignoreInvalid: bool = False):
221+
def disable(
222+
self, names: str | Iterable[str], ignoreInvalid: bool = False
223+
) -> list[str]:
198224
"""Disable rules with given names.
199225
200226
:param names: name or list of rule names to enable.

0 commit comments

Comments
 (0)