o
    ċf5)                     @   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_whitespaceTranslatorsz\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/humari/myenv/lib/python3.10/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%|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 qn+|r|dj|||||d n|dj||||d |D ]
}|t|d qd}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}|rd| }d|||f }t|t qg ||< n|dd||   d}|jtjkrt|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%|r{t !|jD ]
}!|d |!  q8|d rlt#|d } | d }|d dkr`|"d}n|d dkrl|"d}d}d}d!|$ v }g }g }q%|r|D ]
}"|d |"  qq%|jd"krd}	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( qq%|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_tokens;   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
startswithTRANSLATOR_COMMENT_MARKwriteappendendblock_rematch	plural_reformatr   SyntaxErrorlinenoVARTEXTreplacecountCOMMENTwarningswarnr   	inline_reblock_reconstant_refindall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_startr8   line	endbmatchpluralmatchpartfilemsgr+   
cur_linenocwarn_msgimatchbmatchcmatchesgcontext_matchfmatchcmatchpartsr   r   r   r   
templatize'   sh  

	







ri   )N)r>   ior   django.template.baser   r   django.utils.regex_helperr   r   r   r   r0   r
   r   rE   r@   rA   r3   r5   rB   ri   r   r   r   r   <module>   s&    