o
    >Di                     @  s  d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ er2ddlmZ dd	lmZ d
ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZdS )!z
Inline(span) level elements
    )annotationsN)TYPE_CHECKINGIteratorPatternSequence   )patterns)Element)_Match)Source)
	LineBreakLiteral
InlineHTMLCodeSpanEmphasisStrongEmphasisLinkImageAutoLinkRawTextc                   @  sV   e Zd ZU dZdZdZded< dZdZdZ	dZ
erded	< dddZedddZdS )InlineElementz,Any inline element should inherit this class    zPattern[str] | strpatternFr   zstr | Sequence[Element]childrenmatchr
   returnNonec                 C  s   | j s|| j| _dS dS )z)Parses the matched object into an elementN)parse_childrengroupparse_groupr   selfr    r#   E/var/www/Datamplify/venv/lib/python3.10/site-packages/marko/inline.py__init__3   s   zInlineElement.__init__textstrsourcer   Iterator[_Match]c                C  s&   t | jtrt| j| _| j|S )zIThis method should return an iterable containing matches of this element.)
isinstancer   r'   recompilefinditer)clsr&   r(   r#   r#   r$   find8   s   zInlineElement.findNr   r
   r   r   )r&   r'   r(   r   r   r)   )__name__
__module____qualname____doc__priorityr   __annotations__r   r    virtualoverrider   r%   classmethodr/   r#   r#   r#   r$   r      s   
 
r   c                   @  s,   e Zd ZdZdZedZed
ddZ	d	S )r   z/Literal escapes need to be parsed at the first.   z,\\([!"#\$%&\'()*+,\-./:;<=>?@\[\\\]^_`{|}~])r&   r'   r   c                 C  s   | j d|S )Nz\1)r   sub)r.   r&   r#   r#   r$   strip_backslashF   s   zLiteral.strip_backslashN)r&   r'   r   r'   )
r1   r2   r3   r4   r5   r+   r,   r   r9   r<   r#   r#   r#   r$   r   @   s    
r   c                   @  s"   e Zd ZdZdZdZddd	Zd
S )r   z0Line breaks:

    Soft: '
'
    Hard: '  
'
       z( *|\\)\n(?!\Z)r   r
   r   r   c                 C  s   | dd | _d| _d S )Nr   )z  \
)r   
startswithsoftr   r!   r#   r#   r$   r%   U   s   
zLineBreak.__init__Nr0   )r1   r2   r3   r4   r5   r   r%   r#   r#   r#   r$   r   K   s
    r   c                   @  s*   e Zd ZdZedejejejf Z	dS )r   r:   zn(<%s(?:%s)* */?>|</%s *>|<!--(?:>|->|[\s\S]*?-->)|<\?[\s\S]*?\?>|<![A-Z]+ +[\s\S]*?>|<!\[CDATA\[[\s\S]*?\]\]>)N)
r1   r2   r3   r5   r+   r,   r   tag_name	attributer   r#   r#   r#   r$   r   Z   s    r   c                   @     e Zd ZdZdZdZdS )r   z Strong emphasis: **sample text**TNr1   r2   r3   r4   r7   r   r#   r#   r#   r$   r   g       r   c                   @  rD   )r   zEmphasis: *sample text*TNrE   r#   r#   r#   r$   r   n   rF   r   c                   @  "   e Zd ZdZdZdZd
ddZd	S )r   zLink: [text](/link/destination)Tr   r
   r   r   c                 C     | dr"| dd dkr"| dd dkr"| ddd | _n| dp(d| _t| j| _| drEt| ddd | _d S d | _d S 	Nr=   r   <>r   r      r   destr   r<   titler!   r#   r#   r$   r%   {      . zLink.__init__Nr0   r1   r2   r3   r4   r7   r   r%   r#   r#   r#   r$   r   u   
    r   c                   @  rG   )r   zImage: ![alt](/src/address)Tr   r
   r   r   c                 C  rH   rI   rN   r!   r#   r#   r$   r%      rQ   zImage.__init__Nr0   rR   r#   r#   r#   r$   r      rS   r   c                   @  s(   e Zd ZdZdZedZddd	Zd
S )r   zInline code span: `code sample`r:   z&(?<!`)(`+)(?!`)([\s\S]+?)(?<!`)\1(?!`)r   r
   r   r   c                 C  s`   | ddd| _| j r,| jd | jd   krdkr.n d S | jdd | _d S d S d S )Nr=   r?    r   rK   r   )r   replacer   stripr!   r#   r#   r$   r%      s   0zCodeSpan.__init__Nr0   )	r1   r2   r3   r4   r5   r+   r,   r   r%   r#   r#   r#   r$   r      s
    
r   c                   @  s:   e Zd ZdZdZedej dej	 dZ
dd
dZdS )r   zAutolinks: <http://example.org>r:   z<(|z)>r   r
   r   r   c                 C  sD   | d| _ttj| jrd| j | _t| dg| _d| _d S )Nr   zmailto:r   )	r   rO   r+   r   r   emailr   r   rP   r!   r#   r#   r$   r%      s
   
zAutoLink.__init__Nr0   )r1   r2   r3   r4   r5   r+   r,   r   urirX   r   r%   r#   r#   r#   r$   r      s
    r   c                   @  s.   e Zd ZU dZdZerded< ddd
dZdS )r   zIThe raw text is the fallback for all holes that doesn't match any others.Tr'   r   r   escapeboolr   r   c                 C  s   || _ || _d S )N)r   rZ   )r"   r   rZ   r#   r#   r$   r%      s   
zRawText.__init__N)T)r   r'   rZ   r[   r   r   )r1   r2   r3   r4   r7   r   r6   r%   r#   r#   r#   r$   r      s   
 r   )r4   
__future__r   r+   typingr   r   r   r   r   r   elementr	   inline_parserr
   r(   r   __all__r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   <module>   s*    !