U
    ôDk\m	  ã                   @   s¢   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddl	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 )a¥  
Meta Data Extension for Python-Markdown
=======================================

This extension adds Meta Data handling to markdown.

See <https://Python-Markdown.github.io/extensions/meta_data>
for documentation.

Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com).

All changes Copyright 2008-2014 The Python Markdown Project

License: [BSD](http://www.opensource.org/licenses/bsd-license.php)

é    )Úabsolute_import)Úunicode_literalsé   )Ú	Extensioné   )ÚPreprocessorNZ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„ 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   ú:/usr/lib/python3/dist-packages/markdown/extensions/meta.pyÚextendMarkdown%   s    
zMetaExtension.extendMarkdownc                 C   s   i | j _d S ©N)r   ÚMeta)r   r   r   r   Úreset+   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„ ZdS )r   z Get Meta-Data. 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   Úlinesr	   r   ÚlineZm1r   Zm2r   r   r   Úrun2   s.    



zMetaPreprocessor.runN)r   r   r   r   r+   r   r   r   r   r   /   s   r   c                  K   s
   t f | ŽS r   )r   )Úkwargsr   r   r   ÚmakeExtensionP   s    r-   )r   Z
__future__r   r   r   r   r   r   ÚreZloggingZ	getLoggerÚlogÚcompiler    r'   r   r"   r   r   r-   r   r   r   r   Ú<module>   s   




!