
    ei`                        d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZmZmZ  eg d      Z G d	 d
      Z G d d      ZddZ ed      ZddZddZy)a9  
htbuilder -- Tiny HTML string builder for Python
===========================================

Build HTML strings using a purely functional syntax:

Example
-------

>>> from htbuilder import div, ul, li, img
>>>
>>> image_paths = [
...   "http://...",
...   "http://...",
...   "http://...",
... ]
>>>
>>> out = div(id="container")(
...   ul(_class="image-list")(
...     [
...       li(img(src=image_path, _class="large-image"))
...       for image_path in image_paths
...     ]
...   )
... )
>>>
>>> print(out)
>>>
>>> # Or convert to string with:
>>> x = str(out)

    )annotations)AnyIterable   )func)unit)classesfontsrulestyles)areabasebrcolembedhrimginputkeygenlinkmetaparamsourcetrackwbrcirclelinepathpolygonpolylinerectc                  T    e Zd Zh 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y
)HtmlElement>   _tag_attrs	_children_cannot_have_children_cannot_have_attributesc                    |r|j                         nd| _        |xs i | _        t        |      xs g | _        |du | _        |t        v | _        y)zAn HTML element.N)lowerr$   r%   _to_flat_listr&   r(   EMPTY_ELEMENTSr'   )selftagchildrenattrss       T/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/htbuilder/__init__.py__init__zHtmlElement.__init__^   sH    #&CIIKD	kr&x06B'*d{$%(N%:"    c                    |rD| j                   rt        | j                   d      t        |      }| xj                  |z  c_        |r,| j
                  rt        d      i | j                  || _        | S )Nz cannot have children Fragments cannot have attributes)r'   	TypeErrorr$   r+   r&   r(   r%   )r-   r/   r0   	flatteneds       r1   __call__zHtmlElement.__call__g   so    ))499+-B CDD%h/INNi'N++ BCC2T[[2E2DKr3   c                    | j                   rt        d      || j                  v r| j                  |   S t        d|       )Nr5   zNo such attribute )r(   r6   r%   AttributeErrorr-   names     r1   __getattr__zHtmlElement.__getattr__u   sE    ''>??4;;;;t$$1$899r3   c                    |j                  d      rA|t        j                  vr| j                  rt	        d      t
        j                  | ||       y || j                  |<   y )N_r5   )
startswithr#   _MEMBERSr(   r6   object__setattr__r%   )r-   r<   values      r1   rC   zHtmlElement.__setattr__~   sS    ??3;///D4P4P BCCtT51!Dr3   c                L    | j                   rt        d      | j                  |= y )Nr5   )r(   r6   r%   r;   s     r1   __delattr__zHtmlElement.__delattr__   s#    ''>??KKr3   c                     | |      S N r-   r/   s     r1   __getitem__zHtmlElement.__getitem__   s    H~r3   c           
        dj                  | j                  D cg c]  }t        |       c}      }| j                  |S t	        | j                        }dj                  | j
                  j                         D cg c]  \  }}t	        |       d| d c}}      }| j                  r| j
                  r	d| d| dS d| dS | j
                  rd| d| d| d| d	S d| d| d| dS c c}w c c}}w )	N  z=""<z/>>z</)joinr&   strr$   _clean_namer%   itemsr'   )r-   cr/   r.   kvr0   s          r1   __str__zHtmlElement.__str__   s    77DNN;qCF;<99O$))$@Q@Q@ST1[^,Bqc3TU%%{{3%qr**3%r{"{{3%qq
"SE;;3%q
"SE33# < Us   C/>C4
c                    t        |       S rH   rS   r-   s    r1   _repr_html_zHtmlElement._repr_html_   s    4yr3   N)r.   
str | Noner/   r   r0   r   )r/   r   r0   r   returnr#   )r<   rS   r_   r   )r<   rS   rD   r   r_   None)r<   rS   r_   r`   )r/   r   r_   rS   )__name__
__module____qualname__rA   r2   r8   r=   rC   rF   rK   rY   r]   rI   r3   r1   r#   r#   U   s1    H;:"4(r3   r#   c                  ,    e Zd ZddZddZddZd	dZy)
HtmlTagc                    || _         y)zHTML element builder.N)r$   )r-   r.   s     r1   r2   zHtmlTag.__init__   s	    	r3   c                4    t        | j                  g|i |S rH   )r#   r$   )r-   argskwargss      r1   r8   zHtmlTag.__call__   s    4996t6v66r3   c                     | | S rH   rI   rJ   s     r1   rK   zHtmlTag.__getitem__   s    Xr3   c                "    t         |              S rH   r[   r\   s    r1   rY   zHtmlTag.__str__   s    46{r3   N)r.   r^   )ri   r   rj   r   r_   r#   )r_   r#   ra   )rb   rc   rd   r2   r8   rK   rY   rI   r3   r1   rf   rf      s    7r3   rf   c                D    | j                  d      j                  dd      S )z
    This allows you to use reserved words by prepending/appending underscores.
    For example, "_class" instead of "class".
    r?   -)stripreplace)r<   s    r1   rT   rT      s    
 ::c?""3,,r3   Nc                    t        |       g}g }|rf|j                  d      }t        |t              r|j	                  |       n0t        |t
              s|j	                  |       nt        |      |z   }|rf|S )Nr   )listpop
isinstancerS   appendr   )objqueueoutitems       r1   r+   r+      sl    #YKEC
yy| dC JJtD(+JJt J&E  Jr3   c                    t        |       S rH   )rf   )r.   s    r1   r=   r=      s    3<r3   )r<   rS   r_   rS   )rv   r   r_   r   )r.   rS   r_   rf   )__doc__
__future__r   typingr   r   funcsr   unitsr   utilsr	   r
   r   r   setr,   r#   rf   rT   fragmentr+   r=   rI   r3   r1   <module>r      s_   B #     / /:Q Qh - 4=(r3   