o
    N p`  ã                
   @   s†   d Z ddlZddlmZmZ zddlmZ W n ey4 Z zdZG dd„ dej	j
ƒZ
W Y dZ[ndZ[ww erAG dd„ deƒZ
dS dS )zj
A parser for CommonMark MarkDown text using `recommonmark`__.

__ https://pypi.org/project/recommonmark/
é    N)ÚnodesÚ	Component)ÚCommonMarkParserc                   @   s   e Zd Zdd„ ZdS )ÚParserc                 C   s   |j  d¡}| |¡ d S )NzªMissing dependency: MarkDown input is processed by a 3rd party parser but Python did not find the required module "recommonmark" (https://pypi.org/project/recommonmark/).)ÚreporterÚwarningÚappend)ÚselfÚinputstringÚdocumentÚerror© r   úG/usr/lib/python3/dist-packages/docutils/parsers/recommonmark_wrapper.pyÚparse   s   ÿúParser.parseN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   c                   @   s,   e Zd ZdZdZdZdZdd„ Zdd„ Zd	S )
r   z&MarkDown parser based on recommonmark.)ÚrecommonmarkÚ
commonmarkÚmarkdownÚmdzrecommonmark parser)Úparsersc              
   C   s˜  t | d¡ƒD ]\}}t|ƒ|jjkr%|j d|d  ¡}| |¡  dS qz	t 	| ||¡ W n t
yN } z|j d| ¡}| |¡ W Y d}~nd}~ww | tj¡D ]C}|j}d}|d t|ƒk r˜t|| tjƒrŒt||d  tjƒrŒt || | |d ¡ ¡||< ||| _n|d7 }|d t|ƒk sdqU| dd„ ¡D ]	}|d	  d
¡ q | tj¡D ]}d|jv rÃ|d	  |d ¡ |d= q°| tj¡D ]!}dd„ |d D ƒ|d< |jsädd„ |j ¡ D ƒråqÊ|j |¡ qÊ|jj�s| tj¡D ]}|j d¡}	|j ||	¡ q÷| tj¡D ]<}t|d ƒdk�r|d  ¡  |  |¡}
|d |
k�rE|j d|d |
f t d|d  ¡ ¡¡}	| d|	¡ |d= �qdS )z=Use the upstream parser and clean up afterwards.
            Ú
z&Line %d exceeds the line-length-limit.é   Nz2Parsing with "recommonmark" returned the error:
%sr   c                 S   s   t | tjtjfƒS )N)Ú
isinstancer   ÚliteralÚliteral_block)Únr   r   r   Ú<lambda>W   s    
ÿzParser.parse.<locals>.<lambda>ÚclassesÚcodeÚlanguagec                 S   ó   g | ]}|r|‘qS r   r   ©Ú.0Úvr   r   r   Ú
<listcomp>c   ó    z Parser.parse.<locals>.<listcomp>Únamesc                 S   r#   r   r   r$   r   r   r   r'   d   r(   zRaw content disabled.ÚidsÚlevelz1Title level inconsistent. Changing from %d to %d.Ú ) Ú	enumerateÚsplitÚlenÚsettingsÚline_length_limitr   r   r   r   r   Ú	ExceptionÚtraverser   ÚTextElementÚchildrenr   ÚTextÚpopÚparentr   Ú
attributesÚtargetÚvaluesÚremoveÚraw_enabledÚrawr   ÚreplaceÚsectionÚget_section_levelÚastextÚinsert)r	   r
   r   ÚiÚliner   ÚerrÚnoder5   r   Úsection_levelr   r   r   r   4   sv   
ÿ
üÿ€ý	ÿ ú€	
€


ÿý
ór   c                 C   s2   d}	 |j }t|tjƒr|S t|tjƒr|d7 }q)Nr   )r8   r   r   r   r@   )r	   rG   r+   r   r   r   rA   ~   s   ûzParser.get_section_levelN)	r   r   r   Ú__doc__Ú	supportedÚconfig_sectionÚconfig_section_dependenciesr   rA   r   r   r   r   r   '   s    J)rI   Údocutils.parsersÚdocutilsr   r   Úrecommonmark.parserr   ÚImportErrorrF   r   r   r   r   r   r   Ú<module>   s    €þÿ