ó
4…6ic           @   sƒ   d  d l  Z  d  d l Z d  d l Z d  d l Z e  j e ƒ Z d „  Z e ƒ  Z	 d „  Z
 d „  Z d „  Z e j j d e ƒ d S(   iÿÿÿÿNc         C   s   t  | j | |  f ƒ d S(   s‹   
    Reports that the call statement ending at `position` in `filename`
    is missing a from clause.

    `target`
        The string
    N(   t   missingt   append(   t   targett   filenamet   position(    (    s]   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\add_from.pyt   report_missing   s    	c         C   s{   d } xa t  ri | r* d j |  | ƒ } n d j |  ƒ } t j j | ƒ r\ | t k r\ Pn  | d 7} q	 Wt j | ƒ | S(   sL   
    Generate a reasonable and unique new label for a call to `target`.
    i    s   _call_{}_{}s   _call_{}i   (   t   Truet   formatt   renpyt   exportst	   has_labelt
   new_labelst   add(   R   t   nt   label(    (    s]   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\add_from.pyt   generate_label/   s    	c         C   s/  t  j j |  ƒ s d St |  } | j ƒ  t j |  d d ƒ  } | j ƒ  } Wd QXd } d } xD | D]< \ } } | | | | !7} | } | d j t	 | ƒ ƒ 7} qg W| | | 7} t j |  d d d ƒ  } | j
 | ƒ Wd QXy t  j |  d	 ƒ Wn n Xt  j |  |  d	 ƒ t  j |  d |  ƒ d S(
   s,   
    Adds missing from clauses to `fn`.
    Nt   rs   utf-8i    u    s    from {}s   .newt   ws   .bak(   t   ost   patht   existsR    t   sortt   codecst   opent   readR   R   t   writet   unlinkt   rename(   t   fnt   editst   ft   datat   consumedt   outputR   R   (    (    s]   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\add_from.pyt   process_fileE   s*    

c          C   sG   t  j j d ƒ x0 t D]( }  |  j t  j j ƒ r t |  ƒ q q Wt S(   Ns;   Adds from clauses to call statements that are missing them.(	   R   t	   argumentst   takes_no_argumentsR    t
   startswitht   configt   gamedirR"   t   False(   R   (    (    s]   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\add_from.pyt   add_fromm   s
    R)   (   t   collectionsR   R   R   t   defaultdictt   listR    R   t   setR   R   R"   R)   R#   t   register_command(    (    (    s]   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\add_from.pyt   <module>   s   				(	
