
    "KbM                     :    d Z ddlZddlZd Z G d de      Zd Zy)zPython module for generating .ninja files.

Note that this is emphatically not a required piece of Ninja; it's
just a helpful utility for build-file-generation systems that already
use Python.
    Nc                 f    | j                  dd      j                  dd      j                  dd      S )Nz$ z$$  :z$:replace)words    2/usr/lib/python3/dist-packages/gyp/ninja_syntax.pyescape_pathr
      s-    <<U#++C5==c4HH    c                   n    e Zd ZddZd Zd ZddZd Z	 	 	 ddZ	 	 ddZ	d	 Z
d
 Zd Zd ZddZd Zy)Writerc                      || _         || _        y N)outputwidth)selfr   r   s      r	   __init__zWriter.__init__   s    
r   c                 :    | j                   j                  d       y )N
)r   write)r   s    r	   newlinezWriter.newline   s    $r   c                     t        j                  || j                  dz
        D ]#  }| j                  j	                  d|z   dz          % y )N   z# r   )textwrapwrapr   r   r   )r   textlines      r	   commentzWriter.comment   s?    MM$

Q7 	2DKKdTkD01	2r   c                     |y t        |t              rdj                  t        d |            }| j	                  |d||       y )Nr   z = )
isinstancelistjoinfilter_line)r   keyvalueindents       r	   variablezWriter.variable   s<    =eT"HHVD%01E

U+V4r   c                 T    | j                  d|z         | j                  d|d       y )Nzpool %sdepth   r'   r$   r(   )r   namer*   s      r	   poolzWriter.pool%   s%    

9t#$guQ/r   Nc                    | j                  d|z         | j                  d|d       |r| j                  d|d       |r| j                  d|d       |r| j                  ddd       |r| j                  d	|d       |r| j                  d
dd       |r| j                  d|d       |	r| j                  d|	d       |
r| j                  d|
d       y y )Nzrule %scommandr+   r,   descriptiondepfile	generator1r/   restatrspfilerspfile_contentdepsr-   )r   r.   r1   r2   r3   r4   r/   r6   r7   r8   r9   s              r	   rulezWriter.rule)   s     	

9t#$i3MM-QM?MM)WQM7MM+s1M5MM&$qM1MM(CM2MM)WQM7MM+_QMGMM&$qM1 r   c           	         | j                  |      }| j                  |      d d  }t        t        t        |            }t        t        t        |            }|rAt        t        | j                  |            }|j	                  d       |j                  |       |rAt        t        | j                  |            }|j	                  d       |j                  |       | j                  ddj                  |      ddj                  |g|z                |rSt        |t              rt        |j                               }	nt        |      }	|	D ]  \  }
}| j                  |
|d        |S )N|z||zbuild r   z: r+   r,   )_as_listr!   mapr
   appendextendr$   r"   r    dictiteritemsr(   )r   outputsr:   inputsimplicit
order_only	variables
all_inputsout_outputsiteratorr%   vals               r	   buildzWriter.build?   s3   --(]]6*1-
3{G45#k:67
;h(?@Hc"h'[$--
*CDJd#j)

SXXk%:(+$*1D(EG 	H )T*	 12	?$ 2Sc3q12 r   c                 ,    | j                  d|z         y )Nz
include %sr$   r   paths     r	   includezWriter.include]   s    

<$&'r   c                 ,    | j                  d|z         y )Nzsubninja %srO   rP   s     r	   subninjazWriter.subninja`   s    

=4'(r   c                 h    | j                  ddj                  | j                  |            z         y )Nz
default %sr   )r$   r"   r=   )r   pathss     r	   defaultzWriter.defaultc   s%    

<#((4==+?"@@Ar   c                 ^    d}|dz
  }|dkD  r ||   dk(  r|dz  }|dz  }|dkD  r	||   dk(  r|S )z<Returns the number of '$' characters right in front of s[i].r   r+   $ )r   sidollar_countdollar_indexs        r	   _count_dollars_before_indexz"Writer._count_dollars_before_indexf   sT    lUl1<C!7 1<C!7 r   c                    d|z  }t        |      t        |      z   | j                  kD  r| j                  t        |      z
  t        d      z
  }|}	 |j                  dd|      }|dk  s| j                  ||      dz  dk(  rn2|dk  r:|dz
  }	 |j	                  d|dz         }|dk  s| j                  ||      dz  dk(  rn4|dk  rnY| j
                  j                  ||d| z   dz          ||dz   d }d|dz   z  }t        |      t        |      z   | j                  kD  r| j
                  j                  ||z   d	z          y)
z3Write 'text' word-wrapped at self.width characters.z  z $r   r   r   r+   z $
Nr   )lenr   rfindr_   findr   r   )r   r   r'   leading_spaceavailable_spacespaces         r	   r$   zWriter._lineo   s`   v- 3t9,tzz9
 #jj3}+==D	IO#Ejja/e11$>BaG	  qy'!+))C3%QY55dEBQF!K	 
 qyKKmd1Um;fDEa>D !F1H-M; - 3t9,tzz9> 	-$.56r   c                     |g S t        |t              r|S 	 t        |t              rt        |      S 	 |gS # t        $ r Y |gS w xY wr   )r    r!   r>   	TypeError)r   inputs     r	   r=   zWriter._as_list   s]    =IeT"L	%%E{" &
 w  	w	s   7 	AA)N   )r   )NNFNFNNN)NNNN)__name__
__module____qualname__r   r   r   r(   r/   r:   rM   rR   rT   rW   r_   r$   r=   rZ   r   r	   r   r      s[     250 =A?C(,2, KO<()B"7Hr   r   c                 <    d| vsJ d       | j                  dd      S )zbEscape a string such that it can be embedded into a Ninja file without
    further interpretation.r   z$Ninja syntax does not allow newlinesrY   z$$r   )strings    r	   escaperp      s)     vEEE>>#t$$r   )__doc__r   rer
   objectr   rp   rZ   r   r	   <module>rt      s,   
  	INV Nb%r   