a
    B^i                     @   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dZdd ZdS )	StringzH
    This stores information about a translation string or comment.
    Fc           
      C   s   || _ || _|| _|| _|| _tjj| j \| _	| _
| j
rBt}nt}|D ]\}}}	| j	|rJ qnqJd}d}	|| _|| j | jf| _|	| _d S )Ni  zunknown.rpy)filenamelinetextcommenthiderenpytranslation
generationZshorten_filenameZelidedcommonCOMMON_PRIORITIESREGULAR_PRIORITIES
startswithprioritysort_keylauncher_file)
selfr+   r,   r-   r.   r/   plprefixr7   r9    r=   CC:\Users\PahaGest\Downloads\Selene\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:   )formatr@   r=   r=   r>   __repr__s   s    zString.__repr__N)F)__name__
__module____qualname____doc__r?   rB   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rX| }d| }t|}|ddrt j|}|rX|t| ||d qXqB|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)r0   gamescript
translatoradditional_stringsappendr*   parserlist_logical_linesrefinditer	STRING_REgroupreplacestripevalr6   minstorerI   )	r+   rvr,   sh	_filenamelinenor-   mr=   r=   r>   scan_stringsw   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   
rG   z
\s*## (.*)z##  #z# T)r0   configtranslate_commentsr   readrU   split	enumeraterQ   matchrT   rV   rN   joinendswithrb   r*   )r+   rY   r.   startflinesrd   lr^   crZ   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)r8   )rZ   r=   r=   r>   <lambda>   rf   zscan.<locals>.<lambda>)key)r0   r1   r2   Ztranslate_list_filesospathnormpathexistsextendr_   rw   sortsetr7   r3   r-   addrN   )	Zmin_priorityZmax_priorityZcommon_only	filenamesstringsr+   rY   seenrZ   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{   rQ   r0   rS   r5   r4   objectr*   r_   rw   r   r=   r=   r=   r>   <module>   s   8	/")