U
    ߟ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.
    )dot_resub)srcchar r   W/var/www/SKSBV.IN/venv/lib/python3.8/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r|jdkrd|
}d}t|	dD ]\}}|
 tr|}qt|	dD ]2\}}|dk	r||kr|d	|  q|d
 qd}	g }
n|
|j qJ|r|jtjkrdt|j}t|j}|r.|r|rb|dj||||||||d n"|dj|||||||d |D ]}|t|d q|D ]}|t|d qnZ|r|dj|||||d n|dj||||d |D ]}|t|d q d}d}d}g }g }n4|r:d}n(d}|rLd| }td|j||jf np|jtjkr|r|d|j  n|d|j  n8|jtjkr0|jdd}|r|| n
|| qJ|dk	rl|j|jd }||krP|jtjkrh|| D ]2}d}|r(d| }d|||f }t|t qg ||< n|dd||   d}|jtjkrNt|j}t|j}t !|j}|rn|d }|d dkr|"d}n|d dkr|"d}|dd}|d rXt#|d } | d }|d dkr$|"d}n|d dkr<|"d}|dj|||d d}n|dj||d n|rt !|jD ]}!|d |!  q|d rt#|d } | d }|d dkr|"d}n|d dkr|"d}d}d}d!|$ k}g }g }nF|r(|D ]}"|d |"  qn$|jd"kr:d}	n|t|jd# qJ|jtjkr|j%d$}#t |#d }"|"r|d |"d   |#dd D ]B}$|$&d%dkr|d&|$%d'dd   n|t|$d( qqJ|jtjkr|j
 tr0|'|jg |j |j}qJ|t|jd) qJ|( 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'   sb   

	





  

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$   