o
    uvXjæ&  ã                   @   sœ   d dl Z d dlZd dlmZ d dlmZmZmZ ddlm	Z	m
Z
 e  d¡Zdd„ Ze  d	¡Ze  d
¡Ze  d¡Ze  d¡Ze  d¡Ze  d¡Zddd„ZdS )é    N)ÚStringIO)ÚTRANSLATOR_COMMENT_MARKÚLexerÚ	TokenTypeé   )ÚTranslatorCommentWarningÚtrim_whitespacez\Sc                 C   s   t  || ¡S )zg
    Change every non-whitespace character to the given char.
    Used in the templatize function.
    )Údot_reÚsub)ÚsrcÚchar© r   ú^/var/www/html/myproject/venv/lib/python3.10/site-packages/django/utils/translation/template.pyÚblankout   s   r   z.^\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?'))\s*z˜^\s*trans\s+((?:"[^"]*?")|(?:'[^']*?'))(?:\s*\|\s*[^\s:]+(?::(?:[^\s'":]+|(?:"[^"]*?")|(?:'[^']*?')))?)*(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?\s*zD^\s*blocktrans(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?(?:\s+|$)z^\s*endblocktrans$z^\s*plural$z_\(((?:".*?")|(?:'.*?'))\)c           %   	   C   s<  t dƒ}d}d}d}d}g }g }d}	g }
i }d}d}d*dd„}t| ƒ ¡ D �]ó}|	r~|jtjkrw|jdkrwd |
¡}d}t| 	d¡ƒD ]\}}| 
¡  t¡rP|}qCt| 	d¡ƒD ]\}}|durl||krl| d	| ¡ qX| d
¡ qXd}	g }
q%|
 |j¡ q%|�rc|jtjk�r*t |j¡}t |j¡}|�r|rÚ|r®| dj||||ƒ|||ƒ|d�¡ n| dj|||ƒ|||ƒ|d�¡ |D ]
}| t|dƒ¡ qÁ|D ]
}| t|dƒ¡ qÎn+|rë| dj||||ƒ|d�¡ n| dj|||ƒ|d�¡ |D ]
}| t|dƒ¡ qúd}d}d}g }g }q%|�rd}q%d}|�rd| }td|j||jf ƒ‚|jtjk�rF|�r=| d|j ¡ q%| d|j ¡ q%|jtjk�rb|j dd¡}|�r]| |¡ q%| |¡ q%|du�r®|j|j d¡ }||k�r |jtjk�rŸ|| D ]}d}|�rŒd| }d|||f }t |t¡ �q�g ||< n| dd || ¡ ¡ d}|jtjk�r¦t |j¡}t |j¡}t  !|j¡}|�r3| "d¡}|d dk�rÜ| #d¡}n|d dk�rè| #d¡}| dd¡}| "d¡�r(t$ | "d¡¡} |  "d¡}|d dk�r| #d¡}n|d dk�r| #d¡}| dj|||d�¡ d}q%| dj||d�¡ q%|�r‚t  !|j¡D ]
}!| d |! ¡ �q<| "d¡�rst$ | "d¡¡} |  "d¡}|d dk�rg| #d¡}n|d dk�rs| #d¡}d}d}d!| %¡ v }g }g }q%|�r“|D ]
}"| d |" ¡ �q‡q%|jd"k�rœd}	q%| t|jd#ƒ¡ q%|jtjk�rñ|j &d$¡}#t  |#d ¡}"|"�rÇ| d |" "d¡ ¡ |#dd… D ]"}$|$ 'd%¡dk�ræ| d&|$ &d'd¡d  ¡ �qÍ| t|$d(ƒ¡ �qÍq%|jtjk�r|j 
¡  t¡�r| (|jg ¡ |j¡ |j}q%| t|jd)ƒ¡ q%| )¡ S )+z¹
    Turn a Django template into something that is understood by xgettext. It
    does so by translating the Django translation tags into standard gettext
    function invocations.
    Ú NFÚuc                 S   s   d  | ¡}|rt|ƒ}|S )Nr   )Újoinr   )ÚtokensÚtrimÚmessager   r   r   Újoin_tokens7   s   
ztemplatize.<locals>.join_tokensÚ
endcommentTz # %sz #
z, npgettext({p}{!r}, {p}{!r}, {p}{!r},count) )Úpz# ngettext({p}{!r}, {p}{!r}, count) ÚSÚPz pgettext({p}{!r}, {p}{!r}) z gettext({p}{!r}) z	file %s, zDTranslation blocks must not include other block tags: %s (%sline %d)z%%(%s)sú%z%%Ú
zjThe translator-targeted comment '%s' (%sline %d) was ignored, because it wasn't the last item on the line.z# %sz | r   r   ú"ú'é   z _(%s) ÚtrimmedÚcommentÚBú|z:_(z %s ú:ÚFÚX)F)*r   r   ÚtokenizeÚ
token_typer   ÚBLOCKÚcontentsr   Ú	enumerateÚ
splitlinesÚlstripÚ
startswithr   ÚwriteÚappendÚendblock_reÚmatchÚ	plural_reÚformatr   ÚSyntaxErrorÚlinenoÚVARÚTEXTÚreplaceÚcountÚCOMMENTÚwarningsÚwarnr   Ú	inline_reÚblock_reÚconstant_reÚfindallÚgroupÚstripÚ
context_reÚsplit_contentsÚsplitÚfindÚ
setdefaultÚgetvalue)%r   ÚoriginÚoutÚmessage_contextÚintransÚinpluralr    ÚsingularÚpluralÚ	incommentr!   Úlineno_comment_mapÚcomment_lineno_cacheÚ
raw_prefixr   ÚtÚcontentÚtranslators_comment_startr6   ÚlineÚ	endbmatchÚpluralmatchÚpartÚfilemsgr*   Ú
cur_linenoÚcÚwarn_msgÚimatchÚbmatchÚcmatchesÚgÚcontext_matchÚfmatchÚcmatchÚpartsr   r   r   r   Ú
templatize#   sN  

€
üýÿ
ýþÿÿ
€

ü€



ÿ

ÿü€rh   )N)Úrer<   Úior   Údjango.template.baser   r   r   r   r   r   Úcompiler	   r   rD   r>   r?   r1   r3   r@   rh   r   r   r   r   Ú<module>   s     

þ



