o
    „ó·i5)  ã                   @   s’   d dl Z d dlmZ d dlmZmZ d dlmZ ddlm	Z	m
Z
 d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)ÚLexerÚ	TokenType)Ú_lazy_re_compileé   )ÚTranslatorCommentWarningÚtrim_whitespaceZTranslatorsz\Sc                 C   s   t  || ¡S )zg
    Change every non-whitespace character to the given char.
    Used in the templatize function.
    N)Údot_reÚsub)ÚsrcÚchar© r   úgC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\django/utils/translation/template.pyÚblankout   s   r   z.^\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?'))\s*z¡^\s*trans(?:late)?\s+((?:"[^"]*?")|(?:'[^']*?'))(?:\s*\|\s*[^\s:]+(?::(?:[^\s'":]+|(?:"[^"]*?")|(?:'[^']*?')))?)*(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?\s*zM^\s*blocktrans(?:late)?(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?(?:\s+|$)z^\s*endblocktrans(?:late)?$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%|�rb|jtjk�r)t |j¡}t |j¡}|�r|rÙ|r®| dj||||ƒ|||ƒ|d�¡ n| dj|||ƒ|||ƒ|d�¡ |D ]
}| t|dƒ¡ qÁ|D ]5}| t|dƒ¡ qÎ|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�rE|�r<| d|j ¡ q%| d|j ¡ q%|jtjk�ra|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¡}|�r.|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%|�rzt  !|j¡D ]
}!| d |! ¡ �q7|d �rkt# |d ¡} | d }|d dk�r_| "d¡}n|d dk�rk| "d¡}d}d}d!| $¡ v }g }g }q%|�rŠ|D ]Ž}"| d |" ¡ �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 ]J}$|$ &d%¡dk�rÜ| d&|$ %d'd¡d  ¡ �qÃ| t|$d(ƒ¡ �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   )ÚtokensZtrimÚmessager   r   r   Újoin_tokens;   s   
ztemplatize.<locals>.join_tokensZ
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   ZBLOCKÚcontentsr   Ú	enumerateÚ
splitlinesÚlstripÚ
startswithÚTRANSLATOR_COMMENT_MARKÚwriteÚappendÚendblock_reÚmatchÚ	plural_reÚformatr   ÚSyntaxErrorÚlinenoZVARZTEXTÚreplaceÚcountÚCOMMENTÚwarningsÚwarnr   Ú	inline_reÚblock_reÚconstant_reÚfindallÚstripÚ
context_reZsplit_contentsÚsplitÚfindÚ
setdefaultÚgetvalue)%r   ÚoriginÚoutZmessage_contextZintransZinpluralr   ZsingularÚpluralZ	incommentr   Zlineno_comment_mapZcomment_lineno_cacheZ
raw_prefixr   ÚtÚcontentZtranslators_comment_startr4   ÚlineZ	endbmatchZpluralmatchÚpartZfilemsgr'   Z
cur_linenoÚcZwarn_msgZimatchZbmatchZcmatchesÚgZcontext_matchZfmatchZcmatchÚpartsr   r   r   r   Ú
templatize'   sh  

€ÿþüÿ	ýÿýÿþÿÿÿ
€

ü€ÿ


ÿÿ

€€rN   )N)r8   Úior   Zdjango.template.baser   r   Zdjango.utils.regex_helperr   r   r   r   r,   r	   r   r?   r:   r;   r/   r1   r<   rN   r   r   r   r   Ú<module>   s&    þÿ