U
    \> e(
  ã                   @  s¢   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddl	m
Z
 e d	¡Ze d
¡Ze d¡Ze d¡Ze d¡ZG dd„ deƒZG dd„ deƒZdd„ ZdS )z“
This extension adds Meta Data handling to markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/meta_data)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚPreprocessorN)ÚAnyZMARKDOWNz1^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)z^[ ]{4,}(?P<value>.*)z^-{3}(\s.*)?z^(-{3}|\.{3})(\s.*)?c                   @  s&   e Zd ZdZdd„ Zddœdd„ZdS )	ÚMetaExtensionz* Meta-Data extension for Python-Markdown. c                 C  s(   |  | ¡ || _|j t|ƒdd¡ dS )z. Add `MetaPreprocessor` to Markdown instance. Úmetaé   N)ZregisterExtensionÚmdÚpreprocessorsÚregisterÚMetaPreprocessor)Úselfr   © r   ú</tmp/pip-unpacked-wheel-wj0og6ym/markdown/extensions/meta.pyÚextendMarkdown*   s    
zMetaExtension.extendMarkdownÚNone)Úreturnc                 C  s   i | j _d S ©N)r   ÚMeta)r   r   r   r   Úreset0   s    zMetaExtension.resetN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   '   s   r   c                   @  s    e Zd ZdZdddœdd„ZdS )r   z Get Meta-Data. z	list[str])Úlinesr   c                 C  sô   i }d}|r$t  |d ¡r$| d¡ |rè| d¡}t |¡}| ¡ dksèt |¡rTqè|r¬| d¡ ¡  ¡ }| d¡ ¡ }z||  |¡ W qæ t	k
r¨   |g||< Y qæX q$t
 |¡}|rØ|rØ||  | d¡ ¡ ¡ q$| d|¡ qèq$|| j_|S )z- Parse Meta-Data and store in Markdown.Meta. Nr   Ú ÚkeyÚvalue)ÚBEGIN_REÚmatchÚpopÚMETA_REÚstripÚEND_REÚgroupÚlowerÚappendÚKeyErrorÚMETA_MORE_REÚinsertr   r   )r   r   r	   r   ÚlineÚm1r   Úm2r   r   r   Úrun7   s.    



zMetaPreprocessor.runN)r   r   r   r   r/   r   r   r   r   r   4   s   r   c                  K  s
   t f | ŽS r   )r   )Úkwargsr   r   r   ÚmakeExtensionU   s    r1   )r   Ú
__future__r   r   r   r   r   ÚreÚloggingÚtypingr   Ú	getLoggerÚlogÚcompiler#   r*   r    r%   r   r   r1   r   r   r   r   Ú<module>   s   




!