ó
    …~i‚  ã                  óä   • S r SSKJr  SSKJrJrJr  SSKJrJ	r	  SSK
Jr  SSKJr  SSKJr  \(       a  SS	KJr  SS
KJr  Sr " S S\5      r " S S5      r\" 5       rSS jrSS jrSS jr/ SQrg)a  
 _    _     _     ___   _  _    ___
| \  / |   /_\   | _ \ | |/ /  / _ \
| |\/| |  / _ \  |   / | ' <  | (_) |
|_|  |_| /_/ \_\ |_|_\ |_|\_\  \___/

A markdown parser with high extensibility.

Licensed under MIT.
Created by Frost Ming<mianghong@gmail.com>
é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚcasté   )ÚMarkoExtensionÚload_extension)ÚHTMLRenderer)ÚParser)ÚRenderer)ÚDocument)ÚElementTypez2.2.2c                  ó   • \ rS rSrSS jrSrg)Ú	SetupDoneé   c                ó   • g)Nz4Unable to register more extensions after setup done.© )Úselfs    ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/marko/__init__.pyÚ__str__ÚSetupDone.__str__   s   € ØEó    r   N)ÚreturnÚstr)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__r   r   r   r   r      s   † ÷Fr   r   c                  óv   • \ rS rSrSr\\S4       SS jjrSS jrSS jr	SS jr
SS jrSS	 jrSS
 jrSrg)ÚMarkdowné"   aö  The main class to convert markdown documents.

Attributes:
    * parser: an instance of :class:`marko.parser.Parser`
    * renderer: an instance of :class:`marko.renderer.Renderer`

:param parser: a subclass of :class:`marko.parser.Parser`.
:param renderer: a subclass of :class:`marko.renderer.Renderer`.
:param extensions: a list of extensions to register on the object.
    See document of :meth:`Markdown.use()`.

.. note::
    This class is not thread-safe. Create a new instance for each thread.
Nc                ó  • [        U[        5      (       d  [        S5      eXl        / U l        [        U[
        5      (       d  [        S5      eX l        / U l        / U l        SU l	        U(       a  U R                  " U6   g g )Nz$parser must be a subclass of Parser.z(renderer must be a subclass of Renderer.F)Ú
issubclassr   Ú	TypeErrorÚ_base_parserÚ_parser_mixinsr   Ú_base_rendererÚ_renderer_mixinsÚ_extra_elementsÚ_setup_doneÚuse)r   ÚparserÚrendererÚ
extensionss       r   Ú__init__ÚMarkdown.__init__2   sv   € ô ˜&¤&×)Ñ)ÜÐBÓCÐCØ"ÔØ*,ˆÔä˜(¤H×-Ñ-ÜÐFÓGÐGØ&ÔØ,.ˆÔà24ˆÔØ ˆÔÞØ�HŠH�jÒ!ð r   c                óN  • U R                   (       a
  [        5       eU H„  n[        U[        5      (       a  [	        U5      nUR
                  U R                  -   U l        UR                  U R                  -   U l        U R                  R                  UR                  5        M†     g)aÓ  Register extensions to Markdown object.
An extension should be either an object providing ``elements``, `parser_mixins``
, ``renderer_mixins`` or all attributes, or a string representing the
corresponding extension in ``marko.ext`` module.

:param \*extensions: string or :class:`marko.helpers.MarkoExtension` object.

.. note:: Marko uses a mixin based extension system, the order of extensions
    matters: An extension preceding in order will have higher priorty.
N)r+   r   Ú
isinstancer   r	   Úparser_mixinsr'   Úrenderer_mixinsr)   r*   ÚextendÚelements)r   r/   Ú	extensions      r   r,   ÚMarkdown.useG   s‚   € ð ××Ü“+ÐÛ#ˆIÜ˜)¤S×)Ñ)Ü*¨9Ó5�	à"+×"9Ñ"9¸D×<OÑ<OÑ"OˆDÔØ$-×$=Ñ$=À×@UÑ@UÑ$UˆDÔ!Ø× Ñ ×'Ñ'¨	×(:Ñ(:Ö;ò $r   c           	     óª  • U R                   (       a  g[        [        [        S[	        U R
                  5      U R                  4-   0 5      " 5       5      U l        U R                   H  nU R                  R                  U5        M      [        [        [        S[	        U R                  5      U R                  4-   0 5      " 5       5      U l        SU l         g)z)Install all extensions and set things up.NÚ_ParserÚ	_RendererT)r+   r   r   ÚtypeÚtupler'   r&   r-   r*   Úadd_elementr   r)   r(   r.   )r   Úes     r   Ú_setup_extensionsÚMarkdown._setup_extensions\   s±   € à××ØÜÜÜ�œE $×"5Ñ"5Ó6¸$×:KÑ:KÐ9MÑMÈrÔRÓTó
ˆŒð ×%Ô%ˆAØ�K‰K×#Ñ# AÖ&ñ &äÜÜØÜ�d×+Ñ+Ó,°×0CÑ0CÐ/EÑEØôó ó
ˆŒð  ˆÕr   c                óB   • U R                  U R                  U5      5      $ )z Parse and render the given text.)ÚrenderÚparse©r   Útexts     r   ÚconvertÚMarkdown.convertp   s   € à�{‰{˜4Ÿ:™: dÓ+Ó,Ð,r   c                ó$   • U R                  U5      $ )N)rH   rF   s     r   Ú__call__ÚMarkdown.__call__t   s   € Ø�|‰|˜DÓ!Ð!r   c                óX   • U R                  5         U R                  R                  U5      $ )z]Call ``self.parser.parse(text)``.

Override this to preprocess text or handle parsed result.
)rA   r-   rE   rF   s     r   rE   ÚMarkdown.parsew   s%   € ð
 	×ÑÔ Ø�{‰{× Ñ  Ó&Ð&r   c                ó’   • U R                  5         U R                   nUR                  U5      sSSS5        $ ! , (       d  f       g= f)zMCall ``self.renderer.render(text)``.

Override this to handle parsed result.
N)rA   r.   rD   )r   ÚparsedÚrs      r   rD   ÚMarkdown.render   s/   € ð
 	×ÑÔ Ø�]Š]˜aØ—8‘8˜FÓ#÷ �]�]ús	   �8¸
A)r&   r(   r*   r'   r)   r+   r-   r.   )r-   ztype[Parser]r.   ztype[Renderer]r/   z%Iterable[str | MarkoExtension] | Noner   ÚNone)r/   zstr | MarkoExtensionr   rS   )r   rS   ©rG   r   r   r   ©rG   r   r   r   ©rP   r   r   r   )r   r   r   r   Ú__doc__r   r
   r0   r,   rA   rH   rK   rE   rD   r   r   r   r   r!   r!   "   s[   † ñð"  &Ø#/Ø<@ð	"àð"ð !ð"ð :ð	"ð
 
õ"ô*<ô* ô(-ô"ô'÷$r   r!   c                ó,   • [         R                  U 5      $ )z_Parse and render the given text.

:param text: text to convert.
:returns: The rendered result.
)Ú	_markdownrH   ©rG   s    r   rH   rH   �   s   € ô ×Ñ˜TÓ"Ð"r   c                ó,   • [         R                  U 5      $ )zeParse the text to a structured data object.

:param text: text to parse.
:returns: the parsed object
)rY   rE   rZ   s    r   rE   rE   –   s   € ô �?‰?˜4Ó Ð r   c                ó,   • [         R                  U 5      $ )zcRender the parsed object to text.

:param parsed: the parsed object
:returns: the rendered result.
)rY   rD   )rP   s    r   rD   rD   Ÿ   s   € ô ×Ñ˜FÓ#Ð#r   )	r   r!   rH   rE   rD   r	   r   r   r
   NrT   rU   rV   )rW   Ú
__future__r   Útypingr   r   r   Úhelpersr   r	   Úhtml_rendererr
   r-   r   r.   r   Úblockr   r   Ú__version__Ú	Exceptionr   r!   rY   rH   rE   rD   Ú__all__r   r   r   Ú<module>re      si   ðñ
õ #ç 0Ñ 0ç 3Ý 'Ý Ý æÝÝ#à€ôF�	ô F÷
d$ñ d$ñP ‹J€	ô#ô!ô$ò
�r   