
    gi                    v   d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
 ddlmZ  G d de	j                  Z G d	 d
e
j                  Z G d d          Z G d de
j                  Z G d de	j                  Z G d de	j                  Z G d de	j                  Z G d de	j                  ZdS )z
Extra elements
    )annotationsN)Anycast)blockinline)Sourcec                  B     e Zd Z ej        d          ZdZ fdZ xZS )	Paragraphz(\[[\sxX]\])\s+\STc                N   t                                          |           | j                            | j                  }|ra|                    d          dd                                         dk    | _        | j        |                    d          d          | _        d S d S )N   x)	super__init___task_list_item_patternmatchinline_bodygrouplowercheckedend)selflinesm	__class__s      n/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/marko/ext/gfm/elements.pyr   zParagraph.__init__   s    (..t/?@@ 	<771::ad+1133s:DL#/a

;D	< 	<    )	__name__
__module____qualname__recompiler   overrider   __classcell__r   s   @r   r
   r
      sP        (bj)=>>H< < < < < < < < <r   r
   c                  :    e Zd Z ej        d          ZdZdZdZdS )Strikethroughz(?<!~)(~|~~)([^~]+)\1(?!~)   T   N)	r   r   r    r!   r"   patternpriorityparse_childrenparse_group r   r   r'   r'      s/        bj677GHNKKKr   r'   c                  4    e Zd ZddZd	dZd	dZd	dZd ZdS )
	_MatchObjr   c                0    || _         || _        || _        d S N)_match_start_shift
_end_shift)r   r   start_shift	end_shifts       r   r   z_MatchObj.__init__#   s    '#r   c                    | j                                         | j        z   }|dk    r|S t          || j                             |                    S Nr   )r3   startr4   max)r   nr:   s      r   r:   z_MatchObj.start(   sK    !!##d&7766L5$+++A..///r   c                    | j                                         | j        z   }|dk    r|S t          || j                             |                    S r9   )r3   r   r5   min)r   r<   r   s      r   r   z_MatchObj.end.   sF    koo$/166J3**+++r   c                F   t          |                     |          | j                            |          z
  d          pd }t          |                     |          | j                            |          z
  d          pd }| j                            |          ||         S r9   )r;   r:   r3   r>   r   r   )r   r<   r:   r   s       r   r   z_MatchObj.group4   s    DJJqMMDK$5$5a$8$88!<<D$((1++ 2 22A66>${  ##E#I..r   c                ,    t          | j        |          S r2   )getattrr3   )r   names     r   __getattr__z_MatchObj.__getattr__9   s    t{D)))r   N)r   r   )r   )r   r   r    r   r:   r   r   rC   r.   r   r   r0   r0   "   ss        $ $ $ $
0 0 0 0, , , ,/ / / /
* * * * *r   r0   c                       e Zd Z ej        d          ZdZ ej        dez            ZdZ fdZ	e
d             Z xZS )UrlzC(?:^|(?<=[\s*_~(\uff00-\uffef]))(www\.([\w.\-]*?\.[\w.\-]+)[^<\s]*)z([\w.\-+]+@[\w.\-]*?\.[\w.\-]*[a-zA-Z0-9]z_(?:^|(?<=[\s*_~(\uff00-\uffef]))((?:https?|ftp)://([\w.\-]*?\.[\w.\-]+)[^<\s]*|%s(?=[\s.<]|\Z))r(   c                    t                                          |           | j                            | j                  rd| j        z   | _        d S d S )Nzhttp://)r   r   www_patternr   dest)r   r   r   s     r   r   zUrl.__init__H   sR    !!$),, 	.!DI-DIII	. 	.r   c             #  D  K   t          j        | j                            |          | j                            |                    D ]V}|                    d          }|rJ|                    d          }t          |          dk     s!t          d |dd          D                       rd|                                }|d         dv rt          |d          }n|d         dk    rj|
                    d          |
                    d	          k    r>|
                    d          |
                    d	          z
  }t          ||           }nHt          j        d
|          }|r1t          |t          |                                                     }|V  Xd S )Nr)   .c              3     K   | ]}d |v V  	dS )_Nr.   ).0ps     r   	<genexpr>zUrl.find.<locals>.<genexpr>U   s&      (F(Fa(F(F(F(F(F(Fr   r   )?!rJ   ,:*rL   ~)r7   )(z&[a-zA-Z]+;$)	itertoolschainrG   finditerbare_patternr   splitlenanyr0   countr!   search)	clstextsourcer   domainparts	link_textshiftr   s	            r   findzUrl.findM   s     _O$$T**C,<,E,Ed,K,K
 
 	 	E [[^^F S))u::>>S(F(F5:(F(F(F%F%F>I} HHH!%26662#%%)//#*>*>QTAUAU*U*U!,,ys/C/CC!%E6:::Ioy99 H%eAGGIIGGGEKKKK%	 	r   )r   r   r    r!   r"   rG   email_patternr\   r+   r   classmethodri   r$   r%   s   @r   rE   rE   =   s        "*N K @M2:	$&3	4 L H. . . . .
   [    r   rE   c                  z    e Zd ZdZdZdd	Zedd            Zedd            Ze	d             Z
e	d             ZdS )TablezA table element. childrenlist[TableRow]
delimiters	list[str]returnNonec                "    || _         || _        d S r2   ro   rq   )r   ro   rq   s      r   r   zTable.__init__i   s     $r   TableRowc                B    t          t          | j        d                   S r9   )r   rw   ro   r   s    r   headz
Table.headm   s    HdmA.///r   intc                4    t          | j        j                  S r2   )r^   rz   ro   ry   s    r   num_of_colszTable.num_of_colsq   s    49%&&&r   c                   |                                  t                              |          r|j        j        rdS t          j                            |                                          dS |j                                        |_	        t          d |j        j
        D                       }t                              |          r;|j        j        r/t          |j        j
                  t          |j                  k    r|                                 dS |g|j        j
        d|j        _        |                                 dS )NFc                ,    g | ]}t          |          S r.   	TableCellrM   cells     r   
<listcomp>zTable.match.<locals>.<listcomp>   s    JJJT4JJJr   rv   T)anchorrw   r   contextis_delimitersplitterra   	next_liner   poscellsr^   ro   reset
table_infoconsume)rb   rd   rz   s      r   r   zTable.matchu   s    ~~f%% 	)D 	5##F$4$4$6$677?5 \%%''
JJV^5IJJJKKv&&	>.	 6>'((C,>,>>>LLNNN5 ..%
 %
! 	tr   c                    | di |j         j        }|                    |          5  t          |j        |j        j                  D ]g\  }}|                                }d|_        |d         dk    r|d         dk    rd|_	        @|d         dk    rd|_	        T|d         dk    rd|_	        h|j
        s|j                                        D ];}t          |t          t          j        f          r$|                    |          r nN<t$                              |          r3|j                            t$                              |                     	 d d d            n# 1 swxY w Y   |S )	NTr   rT   r   centerleftrightr.   )r   r   under_stateziprq   rz   ro   stripheaderalign	exhaustedparser_build_block_element_list
issubclassrm   r   r
   r   rw   appendparse)rb   rd   rvdth
stripped_des          r   r   zTable.parse   s   S--6>,--## 	 	R]BG,<== ' '2WWYY
 	a=C''JrNc,A,A'BHH]c))%BHH^s**&BH& 
@@BB ! !A!!eU_%=>> ! wwv   ~~f-- !**8>>&+A+ABBB )	 	 	 	 	 	 	 	 	 	 	 	 	 	 	* 	s   D2E&&E*-E*N)ro   rp   rq   rr   rs   rt   )rs   rw   )rs   r{   )r   r   r    __doc___prefixr   propertyrz   r}   rk   r   r   r.   r   r   rm   rm   d   s        G% % % % 0 0 0 X0 ' ' ' X'   [0   [  r   rm   c                      e Zd ZdZ ej        d          Z ej        d          ZdZdd	Z	e
dd            Ze
dd            ZdS )rw   zA table row element.z\s*(?<!\\)\|\s*z:?-+:?Tr   list[TableCell]rs   rt   c                    || _         d S r2   )ro   )r   r   s     r   r   zTableRow.__init__   s    r   rd   r   r   c                    |                                 }|rt          j        d|          sdS  j                            |                                          }|r|d         s|                    d           |r|d         s|                                 t          |          dk     rdS ||j        _	        t           fd|D                       |j        _        dS )Nz {,3}\SFr   r   r   c              3  L   K   | ]}j                             |          V  d S r2   )	delimiterr   )rM   r   rb   s     r   rO   z!TableRow.match.<locals>.<genexpr>   s3      )V)V#-*=*=d*C*C)V)V)V)V)V)Vr   T)r   r!   r   r   r]   r   popr^   r   r   allr   )rb   rd   linerf   s   `   r   r   zTableRow.match   s    !! 	28J55 	5""4::<<00 	q 	IIaLLL 	r 	IIKKKu::>>5$&))V)V)V)VPU)V)V)V&V&V#tr   c           	     4   |                                  t          t          |j                  }|j        j        d d          }t          |          |j        k     rB|                    d t          |j        t          |          z
            D                        n't          |          |j        k    r|d |j                 }d |D             }t          |j        j        |          D ]$\  }}t          t          |          j        |_        % | |          S )Nc              3     K   | ]}d V  dS )rn   Nr.   )rM   rL   s     r   rO   z!TableRow.parse.<locals>.<genexpr>   s"      LLLLLLLLr   c                ,    g | ]}t          |          S r.   r   r   s     r   r   z"TableRow.parse.<locals>.<listcomp>   s    ;;;T4;;;r   )r   r   rm   stater   r   r^   r}   extendranger   rz   ro   r   r   )rb   rd   parentr   cell_elementsrz   r   s          r   r   zTableRow.parse   s   eV\**!>/2u::***LLLLU6+=E

+J%K%KLLLLLLLZZ&,,,.F../E;;U;;;fk2MBB 	5 	5JD$i..4DJJs=!!!r   N)r   r   rs   rt   )rd   r   rs   r   )rd   r   rs   rw   )r   r   r    r   r!   r"   r   r   virtualr   rk   r   r   r.   r   r   rw   rw      s        rz,--H
9%%IG       [ " " " [" " "r   rw   c                      e Zd ZdZdZd	dZdS )
r   zA table cell element.Trc   strrs   rt   c                |    |                                                     dd          | _        d| _        d | _        d S )Nz\||F)r   replacer   r   r   )r   rc   s     r   r   zTableCell.__init__   s4    ::<<//s;;!%


r   N)rc   r   rs   rt   )r   r   r    r   r   r   r.   r   r   r   r      s3        G& & & & & &r   r   c                  b    e Zd ZdZej        j        dz   Zed             Zed             Z	d Z
dS )Alertz^Alert block element: block quote with a header like WARNING, NOTE, TIP, IMPORTANT, or CAUTION.r   c                ,    |                     d          S )Nz3 {,3}>\s*\[\!(WARNING|NOTE|TIP|IMPORTANT|CAUTION)\])	expect_re)rb   rd   s     r   r   zAlert.match   s     VWWWr   c                <   |j                             d          }|                    d           |                                  | |          }|                    |          5  |j                            |          |_        d d d            n# 1 swxY w Y   |S )Nr   F)require_prefix)r   r   r   r   r   r   parse_sourcero   )rb   rd   
alert_typer   s       r   r   zAlert.parse   s    \''**
...J&& 	@ 	@#]77??EN	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   % BBBc                    || _         d S r2   )r   )r   r   s     r   r   zAlert.__init__   s    $r   N)r   r   r    r   r   Quoter+   rk   r   r   r   r.   r   r   r   r      so        hh{#a'HX X [X   [% % % % %r   r   )r   
__future__r   rY   r!   typingr   r   markor   r   marko.sourcer   r
   InlineElementr'   r0   AutoLinkrE   BlockElementrm   rw   r   r   r   r.   r   r   <module>r      s    # " " " " "     				                      	< 	< 	< 	< 	< 	< 	< 	<    F(   * * * * * * * *6$ $ $ $ $&/ $ $ $NB B B B BE B B BJ&" &" &" &" &"u! &" &" &"R& & & & &" & & &% % % % %EK % % % % %r   