o
    l>j                  	   @  sR  d Z ddlmZ dZdZg dZddlZddlmZ ddl	m
Z
mZmZmZmZmZmZ G d	d
 d
ejZeG dd deZeG dd deZe
eeeeedf Ze
eee f Zd&ddZd'ddZe
eeeee
eedf  eeef df 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(d$d%Z!dS ))zFA tiny library to safely render compact HTML5 from Python expressions.    )annotationsz1.3.0zNiklas Fiekas)	FragSupportsRender	Attributerender_intorenderhrawfraghtmlN)escape)UnionDictIterableListTupleProtocolruntime_checkablec                   @  s<   e Zd ZejdddZddd	Ze Z ZZ	dd
dZ
dS )r   builder	List[str]returnNonec                 C     d S N selfr   r   r   F/home/thesage/.local/lib/python3.10/site-packages/tinyhtml/__init__.pyr      s   zFrag.render_intostrc                 C  s   t | S r   r   r   r   r   r   r      s   zFrag.renderc                 C  s   d|   dS )Nzraw()r   r    r   r   r   __repr__#      zFrag.__repr__Nr   r   r   r   r   r   )__name__
__module____qualname__abcabstractmethodr   r   _repr_html___str____html__r"   r   r   r   r   r      s    
r   c                   @     e Zd ZdddZdS )SupportsDunderHTMLr   r   c                 C  r   r   r   r    r   r   r   r-   )      zSupportsDunderHTML.__html__Nr%   )r&   r'   r(   r-   r   r   r   r   r/   '       r/   c                   @  r.   )SupportsJupyterReprHTMLr   r   c                 C  r   r   r   r    r   r   r   r+   /   r0   z#SupportsJupyterReprHTML._repr_html_Nr%   )r&   r'   r(   r+   r   r   r   r   r2   -   r1   r2   r
   r   r   r   r   r   c                 C  s   | d u rd S t | tr|t| dd d S t | tr"| | d S t | tr0||   d S t | tr>|| 	  d S t | t
rJtd| t| dr[| D ]}t|| qQd S |tt| dd d S )NFquotezcannot render bytes as html: __iter__)
isinstancer   appendr   r   r   r/   r-   r2   r+   bytes	TypeErrorhasattr)r
   r   cr   r   r   r   7   s"   





r   r   c                 C  s   g }t | | d|S )N )r   join)r
   r   r   r   r   r   K   s   

r   c                   @  s*   e Zd ZdddZdddZdddZdS )r   _h__namer   attrsr   r   r   c                 K  s@   |r
|  r
| std||| _dd | D | _d S )Nzinvalid html tag: c                 S  s   i | ]	\}}t ||qS r   )_normalize_attr).0attrvaluer   r   r   
<dictcomp>\   s    zh.__init__.<locals>.<dictcomp>)isasciiisalnum
ValueErrornameitemsr?   )r   r>   r?   r   r   r   __init__U   s   z
h.__init__r   r   c                 C  s  | d | | j | j D ]s\}}|du s|d u rq|du r$d}n;t|tr*n5t|tr6td|t|dr[t|t	rMd
dd	 | D }n
d
d
d	 |D }|sZqnt|}| d | | |slq| d | t|dddd | d q| d d S )N<FTr<   z'cannot render bytes as html attribute: r5    c                 s  s    | ]	\}}|r|V  qd S r   r   )rA   keyvalr   r   r   	<genexpr>q   s    z h.render_into.<locals>.<genexpr>c                 s  s     | ]}|d urt |V  qd S r   )r   )rA   rN   r   r   r   rO   s       z="r3   "z&quot;>)r7   rH   r?   rI   r6   r   r8   r9   r:   dictr=   r   replace)r   r   rB   rC   r   r   r   r   ^   s6   







zh.render_intochildrenr   _hc                 G  s
   t | |S r   )rV   r   rU   r   r   r   __call__      
z
h.__call__N)r>   r   r?   r   r   r   r$   )rU   r   r   rV   )r&   r'   r(   rJ   r   rX   r   r   r   r   r   T   s    

	.r   c                   @  s    e Zd ZdddZdddZdS )rV   tagr   rU   Tuple[SupportsRender, ...]r   r   c                 C  s   || _ || _d S r   )rZ   rU   )r   rZ   rU   r   r   r   rJ      s   
z_h.__init__r   r   c                 C  sH   | j | | jD ]}t|| q	|d || j j |d d S )Nz</rR   )rZ   r   rU   r7   rH   r   r   childr   r   r   r      s   

z_h.render_intoN)rZ   r   rU   r[   r   r   r$   r&   r'   r(   rJ   r   r   r   r   r   rV      s    
rV   c                   @  s    e Zd ZdddZdd	d
ZdS )r	   r   r   r   r   c                 C  
   || _ d S r   r   )r   r   r   r   r   rJ      rY   zraw.__init__r   r   c                 C  s   | | j d S r   )r7   r   r   r   r   r   r      r#   zraw.render_intoN)r   r   r   r   r$   r^   r   r   r   r   r	          
r	   c                   @  s    e Zd ZdddZdd	d
ZdS )r
   rU   r   c                 G  r_   r   )rU   rW   r   r   r   rJ      rY   zfrag.__init__r   r   r   r   c                 C  s   | j D ]}t|| qd S r   )rU   r   r\   r   r   r   r      s   
zfrag.render_intoN)rU   r   r$   r^   r   r   r   r   r
      ra   c                      s,   e Zd Zd fddZd fd	d
Z  ZS )r   r?   r   r   r   c                   s   t  jdi | d S )Nr   r`   )superrJ   )r   r?   	__class__r   r   rJ      s   zhtml.__init__r   r   c                   s   | d t | d S )Nz<!DOCTYPE html>)r7   rb   r   r   rc   r   r   r      s   
zhtml.render_into)r?   r   r   r   r$   )r&   r'   r(   rJ   r   __classcell__r   r   rc   r   r      s    r   rB   c                 C  sV   | dkrdS d| v r|  ddd} | r"|  r"tdd | D s)td| | S )Nklassclass_-c                 s  s     | ]}|  p|d kV  qdS )ri   N)rF   )rA   chr   r   r   rO      rP   z"_normalize_attr.<locals>.<genexpr>zinvalid html attribute name: )rstriprT   rE   allrG   )rB   r   r   r   r@      s   r@   )r
   r   r   r   r   r   )r
   r   r   r   )rB   r   r   r   )"__doc__
__future__r   __version__
__author____all__r)   r   r   typingr   r   r   r   r   r   r   ABCr   r/   r2   r   intRenderableItemr   r   r   boolr   r   rV   r	   r
   r@   r   r   r   r   <module>   s0   $

*<		