ó
2…6ic           @  sª   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z e j j Z e j j Z d e
 d „ Z d d „ Z d d d „ Z d „  Z e j d „  ƒ Z d „  Z d S(	   iÿÿÿÿ(   t   print_functionNc         C  so  t  |  t j j j ƒ r |  S|  d  k r, |  St  |  t ƒ râ |  sP t d ƒ ‚ qâ d |  k r‡ t j j	 r‡ | r‡ t j j
 j |  d | ƒS|  d d k r§ t j j |  ƒ Sd |  k rÃ t j j |  ƒ St j j t |  j ƒ  ƒ ƒ Sn  t  |  t ƒ rt j j |  ƒ St  |  t ƒ r)t j j
 j |  d | ƒSt |  d ƒ r<|  S|  t k sT|  t k rX|  St d |  f ƒ ‚ d  S(	   Ns0   An empty string cannot be used as a displayable.t   [t   scopei    t   #t   .t
   _duplicates   Not a displayable: %r(   t
   isinstancet   renpyt   displayt   coret   Displayablet   Nonet
   basestringt	   Exceptiont   configt   dynamic_imagest   imaget   DynamicImaget   storet   Solidt   Imaget   ImageReferencet   tuplet   splitt   Colort   listt   hasattrt   Truet   False(   t   dR   t   dynamic(    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyt   displayable_or_none"   s.    c         C  sY  t  |  t j j j ƒ r |  St  |  t ƒ rÌ |  s@ t d ƒ ‚ qÌ d |  k rq t j j rq t j j	 j
 |  d | ƒS|  d d k r‘ t j j |  ƒ Sd |  k r­ t j j |  ƒ St j j t |  j ƒ  ƒ ƒ Sn  t  |  t ƒ rë t j j |  ƒ St  |  t ƒ rt j j	 j
 |  d | ƒSt |  d ƒ r&|  S|  t k s>|  t k rB|  St d |  f ƒ ‚ d	 S(
   sØ   
    :doc: udd_utility
    :name: renpy.displayable

    This takes `d`, which may be a displayable object or a string. If it's
    a string, it converts that string into a displayable using the usual
    rules.
    s0   An empty string cannot be used as a displayable.R   R   i    R   R   R   s   Not a displayable: %rN(   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   (    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyt   displayableF   s*    
c      
   C  sw  t  |  t ƒ s |  g }  n  xU|  D]9} t  | t ƒ s= q" n  | d	 k	 rû d | k rû | rj t | ƒ } n i  } xè t j j j | D]p } | | d <t j	 j
 | d | d t d t ƒd } t j j | ƒ rØ t | ƒ St j j | ƒ r„ t | ƒ Sq„ Wq" t j	 j
 | d | d t d t ƒd } t j j | ƒ r?t | ƒ St j j | ƒ r" t | ƒ Sq" Wt |  d d t ƒSd	 S(
   sÚ   
    Substitutes a scope into `d`, then returns a displayable.

    If `prefix` is given, and a prefix has been given a prefix search is
    performed until a file is found. (Only a file can be used in this case.)
    s   [prefix_t   prefix_R   t   forcet	   translatei    iÿÿÿÿR   N(   R   R   R   R   t   dictR   t	   styledatat	   stylesetst   prefix_searcht   substitutionst
   substituteR   R   t   loadert   loadableR   t   exportst   image_exists(   R   R   t   prefixt   it   pt   rv(    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyt   dynamic_imageo   s,    
(
(
c         C  s8   t  j j |  ƒ }  |  d  k	 r4 t  j j j |  ƒ n  d  S(   N(   R   t   easyR   R   R   t   predictR    (   R   (    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyR4       s    c         c  s9   t  j  ƒ  } d  Vt d j |  t  j  ƒ  | d ƒ ƒ d  S(   Ns   {0}: {1:.2f} msg     @@(   t   timet   printt   format(   t   namet   start(    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyt   timed§   s    c   	      G  s·   g  } x | D] } | j  i  ƒ q W|  s. | St t | | ƒ ƒ } xm |  j ƒ  D]_ \ } } xP | D]3 \ } } | j | ƒ rc | | | t | ƒ <Pqc qc Wt d j | ƒ ƒ ‚ qP W| S(   s€  
    :doc: other

    Splits up `properties` into multiple dictionaries, one per `prefix`. This
    function checks each key in properties against each prefix, in turn.
    When a prefix matches, the prefix is stripped from the key, and the
    resulting key is mapped to the value in the corresponding dictionary.

    If no prefix matches, an exception is thrown. (The empty string, "",
    can be used as the last prefix to create a catch-all dictionary.)

    For example, this code splits properties beginning with text from
    those that do not::

        text_properties, button_properties = renpy.split_properties("text_", "")
    s*   Property {} begins with an unknown prefix.(   t   appendR   t   zipt	   iteritemst
   startswitht   lenR   R7   (	   t
   propertiest   prefixesR1   t   _it   prefix_dt   kt   vR.   R   (    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyt   split_properties®   s    (   t
   __future__R    t   renpy.displayR   t   renpy.styledatat
   contextlibR5   t   colorR   R   R   R   R    R2   R4   t   contextmanagerR:   RF   (    (    (    sY   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\easy.pyt   <module>   s   $)1	