a
    V$cV                     @   s   d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlZd dlZd dlZdZg dZg dZG dd deZd	d
 Zdd ZdddZdS )    )divisionabsolute_importwith_statementprint_functionunicode_literals)PY2
basestringbchrbordchropenpystrrangeroundstrtobytesunicodeNz(?x)
\b_[_p]?\s*\(\s*[uU]?(
\"\"\"(?:\\.|\\\n|\"{1,2}|[^\\"])*?\"\"\"
|'''(?:\\.|\\\n|\'{1,2}|[^\\'])*?'''
|"(?:\\.|\\\n|[^\\"])*"
|'(?:\\.|\\\n|[^\\'])*'
)\s*\)
))
script.rpy   r   )options.rpy
   r   )gui.rpy   r   )screens.rpy   r   ) d   zlauncher.rpy))z_compat/i  obsolete.rpy)z_layout/i  r   )z00layout.rpyi  r   )z00console.rpyi@  developer.rpy)z_developer/i6  r   )z_errorhandling.rpym   	error.rpy)00gamepad.rpy   r    )z00gltest.rpy   r    )z00gallery.rpy   
common.rpy)z00compat.rpyr$   r%   )z00updater.rpy   r%   )r!      r%   )z	00iap.rpy   r%   )r   2   r%   c                   @   s    e Zd ZdZdd Zdd ZdS )StringzH
    This stores information about a translation string or comment.
    c           	      C   s   || _ || _|| _|| _tjj| j \| _| _	| j	r<t
}nt}|D ]\}}}| j|rD qhqDd}d}|| _|| j | jf| _|| _d S )Ni  zunknown.rpy)filenamelinetextcommentrenpytranslation
generationshorten_filenameelidedcommonCOMMON_PRIORITIESREGULAR_PRIORITIES
startswithprioritysort_keylauncher_file)	selfr+   r,   r-   r.   plprefixr8   r:    r>    renpy/translation\scanstrings.py__init__M   s     zString.__init__c                 C   s   dj | dS )Nz2<String {self.filename}:{self.line} {self.text!r}>r;   )formatrA   r>   r>   r?   __repr__p   s    zString.__repr__N)__name__
__module____qualname____doc__r@   rC   r>   r>   r>   r?   r*   H   s   #r*   c              	   C   s   g }t jjjj|  D ]\}}|t| ||d qt j| D ]\}}}t	
t|D ]n}|d}|dd}|durT| }d| }t|}|ddrt j|}|rT|t| ||d qTq>|S )	z
    Scans `filename`, a file containing Ren'Py script, for translatable
    strings.

    Returns a list of TranslationString objects.
    F   z\
r   Nur   _p)r/   gamescript
translatoradditional_stringsappendr*   parserlist_logical_linesrefinditer	STRING_REgroupreplacestripevalr7   minstorerJ   )r+   rvr,   s	_filenamelinenor-   mr>   r>   r?   scan_stringst   s     
r_   c                 C   s   g }| t jjvr|S g }d}t| ddd0}dd | ddd	D }W d    n1 s`0    Y  t|D ]\}}|s|d
 }t	d|}|r|
d
}	|r|	 }	||	 qr|rrdd| }
|
dr|
d}
g }|t| ||
d qr|S )Nr   rzutf-8)encodingc                 S   s   g | ]}|  qS r>   )rstrip).0ir>   r>   r?   
<listcomp>       z!scan_comments.<locals>.<listcomp>u   ﻿r   
rH   z
\s*## (.*)z##  #z# T)r/   configtranslate_commentsr   readrV   split	enumeraterR   matchrU   rW   rO   joinendswithrb   r*   )r+   rZ   r.   startflinesrd   lr^   cr[   r>   r>   r?   scan_comments   s.    >


rw   +  Fc           	      C   s   t jj }g }|D ]:}tj|}tj|s2q|t	| |t
| q|jdd d g }t }|D ]J}|j| k r~qn|j|krqn|r|jsqn|j|v rqn||j || qn|S )zf
    Scans all files for translatable strings and comments. Returns a list
    of String objects.
    c                 S   s   | j S )N)r9   )r[   r>   r>   r?   <lambda>   rf   zscan.<locals>.<lambda>)key)r/   r0   r1   translate_list_filesospathnormpathexistsextendr_   rw   sortsetr8   r4   r-   addrO   )	min_prioritymax_prioritycommon_only	filenamesstringsr+   rZ   seenr[   r>   r>   r?   scan   s.    



r   )r   rx   F)
__future__r   r   r   r   r   renpy.compatr   r   r	   r
   r   r   r   r   r   r   r   r   r|   rR   r/   rT   r6   r5   objectr*   r_   rw   r   r>   r>   r>   r?   <module>   s   8	,")