U
    XKf                     @   s  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 dZdd Zdd Zdd Zd(ddZ dd Z!dd Z"d)ddZ#d*dd Z$d+d!d"Z%d#d$ Z&d,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                 C   sd   t | tst | tr| |S t| }|r6|dS zt| |W S  tk
r^   |  Y S X dS )zHandle template tag variable.ZnoquotesN)
isinstancer   r	   resolveQUOTED_STRINGsearchgroupr
   )valuecontextZ	stringval r   t/home/adriano.carvalho/ftp/files/ProjetoGabarito/ifmuz/gabarito/venv/lib/python3.8/site-packages/bootstrap5/utils.py
handle_var   s    


r   c                 C   s   |  }|d}g }i }d}t|dkrJ|d dkrJ|d }|dd }t|r|D ]R}t|}|sxtdj|d| \}	}
|	r| |
||	< qV|	| |
 qV||||d	S )
zParse template tag contents.r   N   asz"Malformed arguments to tag "{tag}")tag)r!   argskwargsasvar)
Zsplit_contentspoplenr   matchr   formatgroupsZcompile_filterappend)parsertokenbitsr!   r"   r#   r$   bitr'   namer   r   r   r   parse_token_contents$   s$    

r0   c                 C   s   t | d}dd |D S )z'Turn string into a list of CSS classes. c                 S   s   g | ]}|r|qS r   r   .0cr   r   r   
<listcomp>>   s      z%split_css_classes.<locals>.<listcomp>)r   split)css_classesclasses_listr   r   r   split_css_classes;   s    r9   Fc                    s>   t |   fddt |D }|r,|   n |7  d S )z+Add a CSS class to a string of CSS classes.c                    s   g | ]}| kr|qS r   r   r2   r8   r   r   r5   D   s      z!add_css_class.<locals>.<listcomp>r1   )r9   join)r7   	css_classprependZclasses_to_addr   r:   r   add_css_classA   s    
r>   c                    s,   t t|  fddt| D }d|S )z0Remove a CSS class from a string of CSS classes.c                    s   g | ]}| kr|qS r   r   r2   remover   r   r5   O   s      z$remove_css_class.<locals>.<listcomp>r1   )setr9   r;   )r7   r<   r8   r   r?   r   remove_css_classL   s    rB   c                 C   s&   t | }|d|dd td|S )zBuild a script tag.srcurlNscriptsanitize_url_dict
setdefaultr%   
render_tag)rD   url_dictr   r   r   render_script_tagS   s    rK   
stylesheetc                 C   sB   t | dd}|d|dd ||d< |r4||d< td|dd	S )
zBuild a link tag.href)url_attrrD   NrelmedialinkF)attrscloserF   )rD   rO   rP   rJ   r   r   r   render_link_tagZ   s    rT   Tc                 C   s8   d}|s|r|d7 }t || |r*tt|ndt|dS )zRender a HTML tag.z<{tag}{attrs}>{content}z</{tag}> )r!   rR   content)r   r   r   r   )r!   rR   rV   rS   Zbuilderr   r   r   rI   d   s    rI   c                 C   s    t |tstt| } | |S )zRender a Template to unicode.)r   r   AssertionErrorr   render)templater   r   r   r   render_template_filel   s    rZ   c              
   C   sX   t t| }t|j}|dkr&||= n|||< tt|j|j|j|j	t
|dd|jgS )z"Replace a GET parameter in an URL.NT)doseq)r   r   r   queryr   r   schemenetlocpathparamsr   fragment)rD   r/   r   Zurl_componentsr`   r   r   r   url_replace_params   s     

rb   rC   c                 C   s   t | tr|| iS |  S )z:Sanitize url dict as used in django-bootstrap-v5 settings.)r   strcopy)rD   rN   r   r   r   rG      s    
rG   )F)rL   N)NNT)N)rC   )(recollections.abcr   urllib.parser   r   r   Zdjango.forms.utilsr   Zdjango.template.baser   r   r	   r
   r   Zdjango.template.loaderr   Zdjango.utils.encodingr   Zdjango.utils.htmlr   Zdjango.utils.httpr   Zdjango.utils.safestringr   textr   compiler   r   r0   r9   r>   rB   rK   rT   rI   rZ   rb   rG   r   r   r   r   <module>   s,   





