'Wd#dZddlmZddlmZddlmZmZddlm Z m Z m Z m Z ddl Z ddlmZdd lmZe rdd lmZGd d ZGd de dZe dZ edieGdde eZGdde eZy)a class Ruler Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and [[MarkdownIt#inline]] to manage sequences of functions (rules): - keep rules in defined order - assign the name to each rule - enable/disable rules - add/replace rules - allow assign rules to additional named chains (in the same) - caching lists of active rules You will not need use this class directly until write plugins. For simple rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and [[MarkdownIt.use]]. ) annotations)Iterable) dataclassfield) TYPE_CHECKINGGeneric TypedDictTypeVarN)DATACLASS_KWARGS)EnvType) MarkdownItc^eZdZddZeddZej ddZed dZy) StateBasec.||_||_||_yN)srcenvmd)selfrrrs 3/usr/lib/python3/dist-packages/markdown_it/ruler.py__init__zStateBase.__init__"sc|jSr)_srcrs rrz StateBase.src's yyrc ||_d|_yr)r _srcCharCode)rvalues rrz StateBase.src+s 48rctjdtd|j!t d|j D|_|jS)Nz?StateBase.srcCharCode is deprecated. Use StateBase.src instead.) stacklevelc32K|]}t|ywr)ord).0cs r z(StateBase.srcCharCode..8s%@c!f%@s)warningswarnDeprecationWarningrtuplerrs r srcCharCodezStateBase.srcCharCode0sH M     $ %%@dii%@ @D    rN)rstrrrrr )returnr-)rr-r.None)r.ztuple[int, ...])__name__ __module__ __qualname__rpropertyrsetterr,rrrr!sG  ZZ99!!rrceZdZUded<y)RuleOptionsType list[str]altN)r0r1r2__annotations__r5rrr7r7<s Nrr7F)total RuleFuncTvcHeZdZUded<ded<edZded<d ed <y ) Ruler-nameboolenabledF)reprr<fnr8r9N)r0r1r2r:rrCr5rrr>r>Ds I M&B & Nrr>ceZdZddZddZddZ d ddZ d ddZ d ddZ d ddZ d dd Z d dd Z d dd Z ddd Z dd ZddZy)Rulerc g|_d|_yr) __rules__ __cache__rs rrzRuler.__init__Ms13>Brcdt|jD]\}}|j|k(s|cSy)zFind rule index by name) enumeraterGr?)rr?irules r__find__zRuler.__find__Us4 0 GAtyyD  rcrdh}|jD]1}|js|jD]}|j|3i|_|D]h}g|j|<|jD]H}|js|r||jvr!|j|j |j Jjy)zBuild rules lookup cacheN)rGrAr9addrHappendrC)rchainsrMr?chains r __compile__zRuler.__compile__\sNN !D<< ! 4  ! !  6E$&DNN5 ! 6||e4883u%,,TWW5  6 6rNc|j|}|xsi}|dk(rtd|||j|_|j dg|j|_d|_y)zReplace 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 rJParser rule not found: r9N)rNKeyErrorrGrCgetr9rH)rruleNamerCoptionsindexs ratzRuler.atosi h'-R B;4XJ?@ @#%u $+KKr$:u!rc |j|}|xsi}|dk(rtd||jj|t t |d||j dgd|_y)aKAdd new rule to chain before one with given name. :param beforeName: new rule will be added before this one. :param ruleName: new rule will be added before this one. :param fn: new rule function. :param options: new rule options (not mandatory). :raises: KeyError if name not found rJrWTr9NrNrXrGinsertr>r<rYrH)r beforeNamerZrCr[r\s rbeforez Ruler.beforesp j)-R B;4ZLAB B  4 #HdB E28NO rc |j|}|xsi}|dk(rtd||jj|dzt t |d||j dgd|_y)aGAdd new rule to chain after one with given name. :param afterName: new rule will be added after this one. :param ruleName: new rule will be added after this one. :param fn: new rule function. :param options: new rule options (not mandatory). :raises: KeyError if name not found rJrWr Tr9Nr_)r afterNamerZrCr[r\s rafterz Ruler.afterst i(-R B;4YK@A A  AItJ'$GKKrr<rYrH)rrZrCr[s rpushz Ruler.pushsC   XtR'-R1D1DUB1O P rct|tr|g}g}|D]U}|j|}|dkr|r|dkr|std|d|j|_|j |Wd|_|S)aEnable rules with given names. :param names: name or list of rule names to enable. :param ignoreInvalid: ignore errors when rule not found :raises: KeyError if name not found and not ignoreInvalid :return: list of found rule names r!Rules manager: invalid rule name TN isinstancer-rNrXrGrArRrHrnames ignoreInvalidresultr?idxs renablez Ruler.enables eS !GE D--%Ca]a!B4&IJJ*.DNN3  ' MM$   rc|t|tr|g}|jD] }d|_ |j ||S)a-Enable rules with given names, and disable everything else. :param names: name or list of rule names to enable. :param ignoreInvalid: ignore errors when rule not found :raises: KeyError if name not found and not ignoreInvalid :return: list of found rule names F)rkr-rGrArq)rrmrnrMs r enableOnlyzRuler.enableOnlys@ eS !GENN !D DL !{{5-00rct|tr|g}g}|D]U}|j|}|dkr|r|dkr|std|d|j|_|j |Wd|_|S)aDisable rules with given names. :param names: name or list of rule names to enable. :param ignoreInvalid: ignore errors when rule not found :raises: KeyError if name not found and not ignoreInvalid :return: list of found rule names rriFNrjrls rdisablez Ruler.disables eS !GE D--%Ca]a!B4&IJJ*/DNN3  ' MM$   rc|j|j|jJ|jj|gxsgS)a=Return array of active functions (rules) for given chain name. It analyzes rules configuration, compiles caches if not exists and returns result. Default chain name is `''` (empty string). It can't be skipped. That's done intentionally, to keep signature monomorphic for high speed. )rHrUrY)r chainNames rgetRuleszRuler.getRulessF >> !    >>- --~~!!)R06B6rcT|jDcgc]}|jc}Scc}w)z Return all available rule names.)rGr?rrs r get_all_ruleszRuler.get_all_ruless $/1///s%cn|jDcgc]}|js|jc}Scc}w)zReturn the active rule names.)rGrAr?rzs rget_active_ruleszRuler.get_active_ruless$ $<1!))<<rEr5rrrs"#$(==0&!!6iu\ " F  7: H=GJ H=r