3
g3'                 @   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 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)_lazy_re_compile   )TranslatorCommentWarningtrim_whitespacez\Sc             C   s   t j|| S )zg
    Change every non-whitespace character to the given char.
    Used in the templatize function.
    )dot_resub)srcchar r   _/var/www/tester-filtro-web/env/lib/python3.6/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   sd  t d}d}d}d}d}g }g }d}	g }
i }d}d}d*dd}xt| j D ]}|	r
|jtjkr|jdkrdj|
}d}x,t|j	dD ]\}}|j
 jtr|}qW xDt|j	dD ]2\}}|dk	r||kr|jd	|  q|jd
 qW d}	g }
n|
j|j qN|r|jtjkr|tj|j}tj|j}|rF|r|rn|jdj||||||||d n"|jdj|||||||d x|D ]}|jt|d qW x~|D ]}|jt|d qW n^|r|jdj|||||d n|jdj||||d x|D ]}|jt|d qW d}d}d}g }g }n4|rRd}n(d}|rdd| }td|j||jf np|jtjkr|r|jd|j  n|jd|j  n8|jtjkrX|jjdd}|r|j| n
|j| qN|dk	r|j|jjd }||krl|jtjkrx>|| D ]2}d}|rBd| }d|||f }tj|t q,W g ||< n|jddj||   d}|jtjkrrtj|j}tj|j}t j!|j}|r|d }|d dkr|j"d}n|d dkr|j"d}|jdd}|d rtt#j|d } | d }|d dkr@|j"d}n|d dkrX|j"d}|jdj|||d d}n|jdj||d n|r&x$t j!|jD ]}!|jd |!  qW |d rt#j|d } | d }|d dkr|j"d}n|d dkr|j"d}d}d}d!|j$ k}g }g }nJ|rLxB|D ]}"|jd |"  q2W n$|jd"kr^d}	n|jt|jd# qN|jtjkr|jj%d$}#t j|#d }"|"r|jd |"d   x|#dd D ]B}$|$j&d%dkr|jd&|$j%d'dd   n|jt|$d( qW qN|jtjkrF|jj
 jtrX|j'|jg j|j |j}qN|jt|jd) qNW |j( 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j | }|rt|}|S )Nr   )joinr	   )tokensZtrimmessager   r   r   join_tokens7   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
startswithr   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#   s0   















rN   )N)r8   ior   Zdjango.template.baser   r   r   Zdjango.utils.regex_helperr   r   r   r	   r
   r   r?   r:   r;   r/   r1   r<   rN   r   r   r   r   <module>   s   