a
    %ghËv  ã                   @   sb  d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ dZe d¡e d	ej¡e d
¡e d¡e d¡e d¡e dej¡e dej d ej d ej¡gZe d¡e dej¡e d¡e d¡e d¡e d¡gZe d¡Ze d¡Ze d¡Ze d¡Ze d¡Ze d¡Ze d¡Ze d¡Ze d¡Ze d ¡Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Z d)d*„ Z!d+d,„ Z"G d-d.„ d.e#ƒZ$G d/d0„ d0e$ƒZ%G d1d2„ d2e$ƒZ&G d3d4„ d4e$ƒZ'G d5d6„ d6e$ƒZ(G d7d8„ d8e$ƒZ)G d9d:„ d:e$ƒZ*G d;d<„ d<e$ƒZ+G d=d>„ d>e$ƒZ,G d?d@„ d@e$ƒZ-G dAdB„ dBe#ƒZ.G dCdD„ dDe#ƒZ/e dE¡Z0e1dFdG„ e$ 2¡ D ƒƒe/_3dS )Hé    )Úabsolute_importÚunicode_literalsN)Úcommon)Úunescape_string)ÚInlineParser)ÚNodeé   Ú.z ^<(?:script|pre|style)(?:\s|>|$)z^<!--z^<[?]z^<![A-Z]z^<!\[CDATA\[at  ^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|[/]?[>]|$)z^(?:ú|z)\s*$z<\/(?:script|pre|style)>z-->z\?>ú>z\]\]>z<^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$z^[#`~*+_=<>0-9-]z[^ \t\f\v\r\n]z^[*+-]z^(\d{1,9})([.)])z^#{1,6}(?:[ \t]+|$)z^`{3,}(?!.*`)|^~{3,}z^(?:`{3,}|~{3,})(?= *$)z^(?:=+|-+)[ \t]*$z
\r\n|\n|\rc                 C   s   t  t| ¡du S )z6Returns True if string contains only space characters.N)ÚreÚsearchÚ
reNonSpace©Ús© r   úa/mounts/lovelace/software/anaconda3/envs/metaDMG/lib/python3.9/site-packages/commonmark/blocks.pyÚis_blank4   s    r   c                 C   s   | dv S )N)ú ú	r   r   r   r   r   Úis_space_or_tab9   s    r   c                 C   s   |t | ƒk r| | S d S d S ©N)Úlen)ÚlnÚposr   r   r   Úpeek=   s    r   c                 C   s:   | r6| j rdS | js,| jdv r,d| _| j} q d| _q6q dS )z` Returns true if block ends with a blank line,
    descending if needed into lists and sublists.T)ÚlistÚitemF)Úlast_line_blankZlast_line_checkedÚtÚ
last_child)Úblockr   r   r   Úends_with_blank_lineD   s    ÿr"   c                 C   s  | j | jd… }dddddd| jdœ}| jdkr4dS t t|¡}t t|¡}|rjd|d< | ¡ d |d< nN|r´|jd	ks†| d
¡dkr´|}d|d< t	| d
¡ƒ|d< | d¡|d< ndS t
| j | jt| ¡ ƒ ƒ}|du sî|dksî|dksîdS |jd	kr$t t| j | jt| ¡ ƒ d… ¡s$dS |  ¡  |  t| ¡ ƒd¡ | j}| j}|  d
d¡ t
| j | jƒ}| j| dk rŠt|ƒrŠnqŠqLt
| j | jƒdu }	| j| }
|
dksÀ|
d
k sÀ|	rt| ¡ ƒd
 |d< || _|| _tt
| j | jƒƒr|  d
d¡ nt| ¡ ƒ|
 |d< |S )zs Parse a list marker and return data on the marker (type,
    start, delimiter, bullet character, padding) or None.NT)ÚtypeÚtightÚbullet_charÚstartÚ	delimiterÚpaddingÚmarker_offsetr   Zbulletr#   r   r%   Ú	paragraphé   Ú1Úorderedr&   é   r'   r   r   é   r(   )Úcurrent_lineÚnext_nonspaceÚindentr   r   ÚreBulletListMarkerÚreOrderedListMarkerÚgroupr   Úintr   r   r   Úadvance_next_nonspaceÚadvance_offsetÚcolumnÚoffsetr   )ÚparserÚ	containerÚrestÚdataÚmÚm2ZnextcZspaces_start_colZspaces_start_offsetZ
blank_itemZspaces_after_markerr   r   r   Úparse_list_markerU   sr    ù	
þÿÿ

ÿþrA   c                 C   s<   |   d¡|  d¡ko:|   d¡|  d¡ko:|   d¡|  d¡kS )z®
    Returns True if the two list items are of the same type,
    with the same delimiter and bullet character.  This is used
    in agglomerating list items into lists.
    r#   r'   r%   )Úget)Ú	list_dataZ	item_datar   r   r   Úlists_matchš   s
    ÿþrD   c                   @   s8   e Zd ZdZeddd„ƒZed	dd„ƒZedd„ ƒZdS )
ÚBlockNc                 C   s   d S r   r   ©r;   r<   r   r   r   Ú	continue_¨   s    zBlock.continue_c                 C   s   d S r   r   ©r;   r!   r   r   r   Úfinalize¬   s    zBlock.finalizec                 C   s   d S r   r   ©r   r   r   r   Úcan_contain°   s    zBlock.can_contain)NN)NN©Ú__name__Ú
__module__Ú__qualname__Úaccepts_linesÚstaticmethodrG   rI   rK   r   r   r   r   rE   ¥   s   rE   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )ÚDocumentFNc                 C   s   dS ©Nr   r   rF   r   r   r   rG   ¸   s    zDocument.continue_c                 C   s   d S r   r   rH   r   r   r   rI   ¼   s    zDocument.finalizec                 C   s   | dkS ©Nr   r   rJ   r   r   r   rK   À   s    zDocument.can_contain)NN)NNrL   r   r   r   r   rR   µ   s   rR   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )ÚListFNc                 C   s   dS rS   r   rF   r   r   r   rG   È   s    zList.continue_c                 C   sb   |j }|r^t|ƒr$|jr$d|jd< q^|j }|rVt|ƒrN|jsB|jrNd|jd< qV|j}q*|j}qd S )NFr$   )Úfirst_childr"   ÚnxtrC   )r;   r!   r   Úsubitemr   r   r   rI   Ì   s     
ÿÿ
zList.finalizec                 C   s   | dkS rT   r   rJ   r   r   r   rK   ß   s    zList.can_contain)NN)NNrL   r   r   r   r   rU   Å   s   rU   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )Ú
BlockQuoteFNc                 C   sV   | j }| jsNt|| jƒdkrN|  ¡  |  dd¡ tt|| jƒƒrR|  dd¡ ndS dS )Nr   r+   FTr   )r0   Úindentedr   r1   r7   r8   r   r:   )r;   r<   r   r   r   r   rG   ç   s    zBlockQuote.continue_c                 C   s   d S r   r   rH   r   r   r   rI   ó   s    zBlockQuote.finalizec                 C   s   | dkS rT   r   rJ   r   r   r   rK   ÷   s    zBlockQuote.can_contain)NN)NNrL   r   r   r   r   rY   ä   s   rY   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )ÚItemFNc                 C   s^   | j r|jd u rdS |  ¡  n<| j|jd |jd  krV|  |jd |jd  d¡ ndS dS )Nr+   r)   r(   Tr   )ÚblankrV   r7   r2   rC   r8   rF   r   r   r   rG   ÿ   s    

ÿÿþzItem.continue_c                 C   s   d S r   r   rH   r   r   r   rI     s    zItem.finalizec                 C   s   | dkS rT   r   rJ   r   r   r   rK     s    zItem.can_contain)NN)NNrL   r   r   r   r   r[   ü   s   r[   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )ÚHeadingFNc                 C   s   dS ©Nr+   r   rF   r   r   r   rG     s    zHeading.continue_c                 C   s   d S r   r   rH   r   r   r   rI   !  s    zHeading.finalizec                 C   s   dS ©NFr   rJ   r   r   r   rK   %  s    zHeading.can_contain)NN)NNrL   r   r   r   r   r]     s   r]   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )ÚThematicBreakFNc                 C   s   dS r^   r   rF   r   r   r   rG   -  s    zThematicBreak.continue_c                 C   s   d S r   r   rH   r   r   r   rI   2  s    zThematicBreak.finalizec                 C   s   dS r_   r   rJ   r   r   r   rK   6  s    zThematicBreak.can_contain)NN)NNrL   r   r   r   r   r`   *  s   r`   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )Ú	CodeBlockTNc                 C   sÞ   | j }| j}|jr°|dkoPt|ƒ| jd koP|| j |jkoPt t|| jd … ¡}|rzt| 	¡ ƒ|j
krz|  || j¡ dS |j}|dkrÚtt|| jƒƒrÚ|  dd¡ |d8 }q€n*|tkrÆ|  td¡ n| jrÖ|  ¡  ndS dS )Né   r+   r.   r   T)r0   r2   Ú	is_fencedr   r1   Ú
fence_charr   r   ÚreClosingCodeFencer5   Úfence_lengthrI   Úline_numberÚfence_offsetr   r   r:   r8   ÚCODE_INDENTr\   r7   )r;   r<   r   r2   ÚmatchÚir   r   r   rG   >  s.    ÿþý
zCodeBlock.continue_c                 C   sd   |j rH|j}| d¡}|d|… }||d d … }t| ¡ ƒ|_||_nt dd|j¡|_d |_d S )NÚ
r   r+   ú(\n *)+$)	rc   Ústring_contentÚindexr   ÚstripÚinfoÚliteralr   Úsub)r;   r!   ÚcontentZnewline_posÚ
first_liner=   r   r   r   rI   [  s    
zCodeBlock.finalizec                 C   s   dS r_   r   rJ   r   r   r   rK   k  s    zCodeBlock.can_contain)NN)NNrL   r   r   r   r   ra   ;  s   ra   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )Ú	HtmlBlockTNc                 C   s&   | j r|jdks|jdkrdS dS d S )Né   é   r+   r   )r\   Úhtml_block_typerF   r   r   r   rG   s  s
    ÿzHtmlBlock.continue_c                 C   s   t  dd|j¡|_d |_d S )Nrm   Ú )r   rs   rn   rr   rH   r   r   r   rI   {  s    zHtmlBlock.finalizec                 C   s   dS r_   r   rJ   r   r   r   rK     s    zHtmlBlock.can_contain)NN)NNrL   r   r   r   r   rv   p  s   rv   c                   @   s8   e Zd ZdZed	dd„ƒZed
dd„ƒZedd„ ƒZdS )Ú	ParagraphTNc                 C   s   | j r
dS dS )Nr+   r   )r\   rF   r   r   r   rG   ‰  s    zParagraph.continue_c                 C   s\   d}t |jdƒdkrB| j |j| j¡}|s,qB|j|d … |_d}q|rXt|jƒrX| ¡  d S )NFr   ú[T)r   rn   Úinline_parserÚparseReferenceÚrefmapr   Úunlink)r;   r!   Zhas_reference_defsr   r   r   r   rI     s    ÿzParagraph.finalizec                 C   s   dS r_   r   rJ   r   r   r   rK   œ  s    zParagraph.can_contain)NN)NNrL   r   r   r   r   r{   †  s   r{   c                   @   sˆ   e Zd ZdZg d¢Zeddd„ƒZeddd„ƒZeddd	„ƒZedd
d„ƒZ	eddd„ƒZ
eddd„ƒZeddd„ƒZeddd„ƒZdS )ÚBlockStartsz‘Block start functions.

    Return values:
    0 = no match
    1 = matched container, keep going
    2 = matched leaf, no more block starts
    )Úblock_quoteÚatx_headingÚfenced_code_blockÚ
html_blockÚsetext_headingÚthematic_breakÚ	list_itemÚindented_code_blockNc                 C   sh   | j sdt| j| jƒdkrd|  ¡  |  dd¡ tt| j| jƒƒrJ|  dd¡ |  ¡  |  	d| j¡ dS dS )Nr   r+   FTr‚   r   )
rZ   r   r0   r1   r7   r8   r   r:   Úclose_unmatched_blocksÚ	add_childrF   r   r   r   r‚   ´  s    ÿzBlockStarts.block_quotec                 C   s¬   | j s¨t t| j| jd … ¡}|r¨|  ¡  |  t| 	¡ ƒd¡ |  
¡  |  d| j¡}t| 	¡  ¡ ƒ|_t ddt dd| j| jd … ¡¡|_|  t| jƒ| j d¡ dS dS )NFÚheadingz[ \t]+#+[ \t]*$rz   z^[ \t]*#+[ \t]*$r.   r   )rZ   r   r   ÚreATXHeadingMarkerr0   r1   r7   r8   r   r5   rŠ   r‹   rp   Úlevelrs   r:   rn   )r;   r<   r?   r   r   r   rƒ   Ã  s,    ÿýÿÿzBlockStarts.atx_headingc                 C   s‚   | j s~t t| j| jd … ¡}|r~t| ¡ ƒ}|  ¡  |  	d| j¡}d|_
||_| ¡ d |_| j|_|  ¡  |  |d¡ dS dS )NÚ
code_blockTr   Fr.   )rZ   r   r   ÚreCodeFencer0   r1   r   r5   rŠ   r‹   rc   rf   rd   r2   rh   r7   r8   )r;   r<   r?   rf   r   r   r   r„   Û  s&    þÿzBlockStarts.fenced_code_blockc                 C   s€   | j s|t| j| jƒdkr|| j| jd … }tddƒD ]H}t t| |¡r2|dk sX|jdkr2|  	¡  |  
d| j¡}||_ dS q2dS )	Nú<r+   é   rx   r*   r…   r.   r   )rZ   r   r0   r1   Úranger   r   ÚreHtmlBlockOpenr   rŠ   r‹   r:   ry   )r;   r<   r   Z
block_typeÚbr   r   r   r…   ð  s    ÿÿÿzBlockStarts.html_blockc                 C   sÞ   | j sÚ|jdkrÚt t| j| jd … ¡}|rÚ|  ¡  t|j	dƒdkrn| j
 |j	| j¡}|s\qn|j	|d … |_	q4|j	rÖtd|jƒ}| ¡ d dkr”dnd|_|j	|_	| |¡ | ¡  || _|  t| jƒ| j d¡ dS dS dS )	Nr*   r   r|   rŒ   ú=r+   r.   F)rZ   r   r   r   ÚreSetextHeadingLiner0   r1   rŠ   r   rn   r}   r~   r   r   Ú	sourceposr5   rŽ   Zinsert_afterr€   Útipr8   r   r:   )r;   r<   r?   r   rŒ   r   r   r   r†     s6    þÿ
ÿzBlockStarts.setext_headingc                 C   sT   | j sPt t| j| jd … ¡rP|  ¡  |  d| j¡ |  t	| jƒ| j
 d¡ dS dS )Nr‡   Fr.   r   )rZ   r   r   ÚreThematicBreakr0   r1   rŠ   r‹   r8   r   r:   rF   r   r   r   r‡     s    
ÿÿzBlockStarts.thematic_breakc                 C   sn   | j r|jdkrjt| |ƒ}|rj|  ¡  | jjdks>t|j|ƒsR|  d| j¡}||_|  d| j¡}||_dS dS )Nr   r   r+   r   )	rZ   r   rA   rŠ   r™   rD   rC   r‹   r1   )r;   r<   r>   r   r   r   rˆ   *  s    

ÿzBlockStarts.list_itemc                 C   sB   | j r>| jjdkr>| js>|  td¡ |  ¡  |  d| j¡ dS dS )Nr*   Tr   r.   r   )	rZ   r™   r   r\   r8   ri   rŠ   r‹   r:   rF   r   r   r   r‰   >  s    
ÿþzBlockStarts.indented_code_block)N)N)N)N)N)N)N)N)rM   rN   rO   Ú__doc__ÚMETHODSrQ   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   r   r   r   r   r   ¡  s$   
r   c                   @   sh   e Zd Zi fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚParserc                 C   sš   t dddgddggƒ| _tƒ | _| j| _| j| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _| j| _i | _d| _t|ƒ| _|| _d S )NÚdocumentr+   r   rz   FT)r   Údocr   Úblock_startsr™   Úoldtipr0   rg   r:   r9   r1   Únext_nonspace_columnr2   rZ   r\   Úpartially_consumed_tabÚ
all_closedÚlast_matched_containerr   Úlast_line_lengthr   r}   Úoptions)Úselfr§   r   r   r   Ú__init__M  s(    
zParser.__init__c                 C   sZ   | j r6|  jd7  _d| jd  }| j jd| 7  _| j j| j| jd… d 7  _dS )z‚ Add a line to the block at the tip.  We assume the tip
        can accept lines -- that check should be done before calling this.r+   r   r   Nrl   )r£   r:   r9   r™   rn   r0   )r¨   Úchars_to_tabr   r   r   Úadd_linec  s
    zParser.add_linec                 C   sf   | j | jj  |¡s*|  | j| jd ¡ q |d }t|| j|gddggƒ}d|_| j |¡ || _|S )zÂ Add block of type tag as a child of the tip.  If the tip can't
        accept children, close and finalize it and try its parent,
        and so on til we find a block that can accept children.r+   r   rz   )	Úblocksr™   r   rK   rI   rg   r   rn   Zappend_child)r¨   Útagr:   Zcolumn_numberZ	new_blockr   r   r   r‹   n  s    zParser.add_childc                 C   s@   | j s<| j| jkr6| jj}|  | j| jd ¡ || _qd| _ dS )z(Finalize and close any unmatched blocks.r+   TN)r¤   r¡   r¥   ÚparentrI   rg   )r¨   r®   r   r   r   rŠ   |  s    zParser.close_unmatched_blocksc                 C   sæ   | j }| j}| j}z|| }W n ty4   d}Y n0 |dkr¢|dkrX|d7 }|d7 }n$|dkr¢|d7 }|d|d  7 }nq¢z|| }W q6 tyž   d}Y q60 q6|dkp¸|dkp¸|dk| _|| _|| _| j| j | _| jtk| _	d S )Nrz   r   r+   r   r   rl   ú)
r0   r:   r9   Ú
IndexErrorr\   r1   r¢   r2   ri   rZ   )r¨   r0   rk   ÚcolsÚcr   r   r   Úfind_next_nonspace…  s0    

zParser.find_next_nonspacec                 C   s   | j | _| j| _d| _d S r_   )r1   r:   r¢   r9   r£   )r¨   r   r   r   r7   £  s    zParser.advance_next_nonspacec                 C   s"  | j }z|| j }W n ty*   d }Y n0 |dkr|d ur|dkrÊd| jd  }|rž||k| _t||ƒ}|  j|7  _|  j| jrŒdnd7  _||8 }qôd| _|  j|7  _|  jd7  _|d8 }n*d| _|  jd7  _|  jd7  _|d8 }z|| j }W q, ty   d }Y q,0 q,d S )Nr   r   r   r+   F)r0   r:   r°   r9   r£   Úmin)r¨   ÚcountÚcolumnsr0   r²   rª   Zchars_to_advancer   r   r   r8   ¨  s4    




zParser.advance_offsetc                 C   s$  d}| j }| j| _d| _d| _d| _d| _|  jd7  _t 	d|¡durVt 
dd|¡}|| _|j}|rÒ|jsnqÒ|}|  ¡  | j|j  | |¡}|dkr˜n,|dkr¦d}n|d	kr¼t|ƒ| _dS td
ƒ‚|s\|j}qÒq\|| jk| _|| _|jdkoú| j|j j}| j}t|jƒ}|sÀ|  ¡  | jsFt 	t|| jd… ¡sF|  ¡  qÀd}	|	|k r¦t||j|	 ƒ| |ƒ}
|
dkr€| j}q¦n"|
d	krš| j}d}q¦n|	d7 }	qJ|	|kr|  ¡  qÀq| jsê| jsê| jjdkrê|   ¡  n,|  !¡  | jr
|jr
d|j_"|j}| jo\|dkpZ|dkr4|j#pZ|dkoZ|j$ oZ|j%d d | jk }|}|rx||_"|j}qb| j| jrà|   ¡  |dkr|j&dkr|j&dkrt 	t'|j& | j| jd… ¡r|  (|| j¡ n6| jt|ƒk r| js|  )d| j¡}|  ¡  |   ¡  t|ƒ| _dS )z³Analyze a line of text and update the document appropriately.

        We parse markdown text by calling this on each line of input,
        then finalizing the document.
        Tr   Fr+   z\u0000Nz\0u   ï¿½r.   z4continue_ returned illegal value, must be 0, 1, or 2r*   r‚   r   r   r…   r/   )*rŸ   r™   r¡   r:   r9   r\   r£   rg   r   r   rs   r0   r    Úis_openr³   r¬   r   rG   r   r¦   Ú
ValueErrorr®   r¤   r¥   rP   r    rœ   rZ   ÚreMaybeSpecialr1   r7   Úgetattrr«   rŠ   r   rc   rV   r˜   ry   ÚreHtmlBlockCloserI   r‹   )r¨   r   Zall_matchedr<   r    ÚrvZmatched_leafZstartsZ
starts_lenrk   Úresr   r   Úcontr   r   r   Úincorporate_lineÇ  sÄ    

ÿ
ÿ
ÿ




ÿ
ÿ
ÿüÿ

ÿþþýzParser.incorporate_linec                 C   s:   |j }d|_|| jg|jd< | j|j  | |¡ || _dS )a3   Finalize a block.  Close it and do any necessary postprocessing,
        e.g. creating string_content from strings, setting the 'tight'
        or 'loose' status of a list, and parsing the beginnings
        of paragraphs for reference definitions.  Reset the tip to the
        parent of the closed block.Fr+   N)r®   r·   r¦   r˜   r¬   r   rI   r™   )r¨   r!   rg   Zabover   r   r   rI   S  s
    zParser.finalizec                 C   sl   |  ¡ }| j| j_| j| j_| ¡ }|durh|d }|j}|d s^|dksR|dkr^| j |¡ | ¡ }q$dS )z„
        Walk through a block & children recursively, parsing string content
        into inline content where appropriate.
        NÚnodeZenteringr*   rŒ   )Úwalkerr   r}   r§   rW   r   Úparse)r¨   r!   rÁ   ÚeventrÀ   r   r   r   r   Úprocess_inlinesa  s    

zParser.process_inlinesc                 C   sÄ   t dddgddggƒ| _| j| _i | _d| _d| _d| _d| _| j| _d| _	t
 t|¡}t|ƒ}t|ƒdkr€|d dkr€|d8 }t|ƒD ]}|  || ¡ qˆ| jr²|  | j|¡ qœ|  | j¡ | jS )z; The main parsing function.  Returns a parsed document AST.rž   r+   r   rz   éÿÿÿÿrl   )r   rŸ   r™   r   rg   r¦   r:   r9   r¥   r0   r   ÚsplitÚreLineEndingr   r“   r¿   rI   rÄ   )r¨   Zmy_inputÚlinesÚlengthrk   r   r   r   rÂ   q  s&    zParser.parseN)rM   rN   rO   r©   r«   r‹   rŠ   r³   r7   r8   r¿   rI   rÄ   rÂ   r   r   r   r   r   L  s   	 r   z#(.)([A-Z](?:[a-z]+|(?<=[a-z0-9].)))c                 c   s$   | ]}t  d |j¡ ¡ |fV  qdS )z\1_\2N)ÚCAMEL_RErs   rM   Úlower)Ú.0Úclsr   r   r   Ú	<genexpr>Š  s   ÿrÎ   )4Ú
__future__r   r   r   Z
commonmarkr   Zcommonmark.commonr   Zcommonmark.inlinesr   Zcommonmark.noder   ri   ÚcompileÚ
IGNORECASEZOPENTAGZCLOSETAGr”   r»   rš   r¹   r   r3   r4   r   r   re   r—   rÇ   r   r   r   r"   rA   rD   ÚobjectrE   rR   rU   rY   r[   r]   r`   ra   rv   r{   r   r   rÊ   ÚdictÚ__subclasses__r¬   r   r   r   r   Ú<module>   s‚   ø	þðúÿ








E5 ,  ?
þ