
    FUg                     
   d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ ddlmZ  e j        d          Zd Zd Zd ZddZ d Z!d Z"ddZ#ddZ$d dZ%d Z&d!dZ'dS )"    N)Mapping)parse_qsurlparse
urlunparse)flatatt)FilterExpressionTemplateSyntaxErrorVariableVariableDoesNotExistkwarg_re)get_template)	force_str)format_html)	urlencode)	mark_safe   )
text_valuez^["\'](?P<noquotes>.+)["\']$c                 L   t          | t                    st          | t                    r|                     |          S t                              |           }|r|                    d          S 	 t          |                               |          S # t          $ r | cY S w xY w)zHandle template tag variable.noquotes)
isinstancer   r
   resolveQUOTED_STRINGsearchgroupr   )valuecontext	stringvals      O/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/bootstrap5/utils.py
handle_varr      s     %)** &j.I.I &}}W%%% $$U++I +z***&&w///   s   2!B B#"B#c                    |                                 }|                    d          }g }i }d}t          |          dk    r|d         dk    r|d         }|dd         }t          |          r|D ]}t          j        |          }|s#t          d                    |                    |                                \  }	}
|	r|                     |
          ||	<   m|	                    |                     |
                     ||||d	S )
zParse template tag contents.r   N   asz"Malformed arguments to tag "{tag}")tag)r%   argskwargsasvar)
split_contentspoplenr   matchr	   formatgroupscompile_filterappend)parsertokenbitsr%   r&   r'   r(   bitr,   namer   s              r   parse_token_contentsr6   $   s!   !!D
((1++CDFE
4yyA~~$r(d**RCRCy
4yy 	: 	: 	:CN3''E `)*N*U*UZ]*U*^*^___,,..KD% :%44U;;tF11%889999GGG    c                 ^    t          |                               d          }d |D             S )z'Turn string into a list of CSS classes. c                     g | ]}||S  r;   ).0cs     r   
<listcomp>z%split_css_classes.<locals>.<listcomp>>   s    )))!q)A)))r7   )r   split)css_classesclasses_lists     r   split_css_classesrB   ;   s1    k**0055L))|))))r7   Fc                     t          |           fdt          |          D             }|r|z   n|z  d                              S )z+Add a CSS class to a string of CSS classes.c                     g | ]}|v|	S r;   r;   )r<   r=   rA   s     r   r>   z!add_css_class.<locals>.<listcomp>D   s#    WWWA,AVAVaAVAVAVr7   r9   )rB   join)r@   	css_classprependclasses_to_addrA   s       @r   add_css_classrI   A   sb    $[11LWWWW!29!=!=WWWN '%4&88L!!!r7   c                     t          t          |                    fdt          |           D             }d                    |          S )z0Remove a CSS class from a string of CSS classes.c                     g | ]}|v|	S r;   r;   )r<   r=   removes     r   r>   z$remove_css_class.<locals>.<listcomp>O   s    QQQ!&Ar7   r9   )setrB   rE   )r@   rF   rA   rL   s      @r   remove_css_classrN   L   sM    "9--..FQQQQ0==QQQL88L!!!r7   c                     t          |           }|                    d|                    dd                     t          d|          S )zBuild a script tag.srcurlNscriptsanitize_url_dict
setdefaultr*   
render_tag)rQ   url_dicts     r   render_script_tagrX   S   sC     %%Hx||E488999h)))r7   
stylesheetc                     t          | d          }|                    d|                    dd                     ||d<   |r||d<   t          d|d	          S )
zBuild a link tag.href)url_attrrQ   NrelmedialinkF)attrscloserS   )rQ   r]   r^   rW   s       r   render_link_tagrb   Z   sh     v666HUD 9 9:::HUO "!fHE::::r7   Tc           	          d}|s|r|dz  }t          || |rt          t          |                    ndt          |                    S )zRender a HTML tag.z<{tag}{attrs}>{content}z</{tag}> )r%   r`   content)r   r   r   r   )r%   r`   re   ra   builders        r   rV   rV   d   sZ    'G % :wCE/Yy/H/H/HWYcmnucvcvwwwwr7   c                 x    t          |t                    sJ t          |           } |                     |          S )zRender a Template to unicode.)r   r   r   render)templater   s     r   render_template_filerj   l   s7    gw'''''H%%H??7###r7   c                    t          t          |                     }t          |j                  }|||= n|||<   t	          t          |j        |j        |j        |j	        t          |d          |j        g                    S )z"Replace a GET parameter in an URL.NT)doseq)r   r   r   queryr   r   schemenetlocpathparamsr   fragment)rQ   r5   r   url_componentsrq   s        r   url_replace_paramrt   s   s    inn--Nn*++F}4LLt%%#%&---'		
 		
  r7   rP   c                 \    t          | t                    r|| iS |                                 S )z:Sanitize url dict as used in django-bootstrap-v5 settings.)r   strcopy)rQ   r\   s     r   rT   rT      s,    #s #88::r7   )F)rY   N)NNT)N)rP   )(recollections.abcr   urllib.parser   r   r   django.forms.utilsr   django.template.baser   r	   r
   r   r   django.template.loaderr   django.utils.encodingr   django.utils.htmlr   django.utils.httpr   django.utils.safestringr   textr   compiler   r   r6   rB   rI   rN   rX   rb   rV   rj   rt   rT   r;   r7   r   <module>r      s   				 # # # # # # 7 7 7 7 7 7 7 7 7 7 & & & & & & p p p p p p p p p p p p p p / / / / / / + + + + + + ) ) ) ) ) ) ' ' ' ' ' ' - - - - - -       
:;;  "H H H.* * *" " " "" " "* * *; ; ; ;x x x x$ $ $ $  2     r7   