
    "KbM                     B    d Z ddlZddlZd Z G d de          Zd ZdS )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                 ~    |                      dd                               dd                               dd          S )Nz$ z$$  :z$:replace)words    2/usr/lib/python3/dist-packages/gyp/ninja_syntax.pyescape_pathr
      s6    <<U##++C55==c4HHH    c                   p    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dS )WriterN   c                 "    || _         || _        d S N)outputwidth)selfr   r   s      r	   __init__zWriter.__init__   s    


r   c                 :    | j                             d           d S )N
)r   write)r   s    r	   newlinezWriter.newline   s    $r   c                     t          j        || j        dz
            D ]"}| j                            d|z   dz              #d S )N   z# r   )textwrapwrapr   r   r   )r   textlines      r	   commentzWriter.comment   sO    M$
Q77 	2 	2DKdTkD01111	2 	2r   r   c                     |d S t          |t                    r#d                    t          d |                    }|                     |d||           d S )Nr   z = )
isinstancelistjoinfilter_line)r   keyvalueindents       r	   variablezWriter.variable   s^    =FeT"" 	2HHVD%0011E

UU+V44444r   c                 f    |                      d|z             |                     d|d           d S )Nzpool %sdepth   r(   r%   r)   )r   namer+   s      r	   poolzWriter.pool%   s7    

9t#$$$guQ/////r   NFc                 
   |                      d|z             |                     d|d           |r|                     d|d           |r|                     d|d           |r|                     ddd           |r|                     d	|d           |r|                     d
dd           |r|                     d|d           |	r|                     d|	d           |
r|                     d|
d           d S d S )Nzrule %scommandr,   r-   descriptiondepfile	generator1r0   restatrspfilerspfile_contentdepsr.   )r   r/   r2   r3   r4   r5   r0   r7   r8   r9   r:   s              r	   rulezWriter.rule)   sF    	

9t#$$$i333 	@MM-QM??? 	8MM)WQM777 	6MM+s1M555 	2MM&$qM111 	3MM(CM222 	8MM)WQM777 	HMM+_QMGGG 	2MM&$qM11111	2 	2r   c           	         |                      |          }|                      |          d d          }t          t          t          |                    }t          t          t          |                    }|rRt          t          |                      |                    }|                    d           |                    |           |rRt          t          |                      |                    }|                    d           |                    |           |                     dd                    |          dd                    |g|z                        |rft          |t                    r"t          |                                          }	nt          |          }	|	D ]\  }
}|                     |
|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?   s   --((]]6**111-
3{G4455#k:6677
 	(;h(?(?@@Hc"""h''' 	*[$--
*C*CDDJd###j)))


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

<$&'''''r   c                 6    |                      d|z             d S )Nzsubninja %srP   rQ   s     r	   subninjazWriter.subninja`   s    

=4'(((((r   c                     |                      dd                    |                     |                    z             d S )Nz
default %sr   )r%   r#   r>   )r   pathss     r	   defaultzWriter.defaultc   s7    

<#((4==+?+?"@"@@AAAAAr   c                 p    d}|dz
  }|dk    r(||         dk    r|dz  }|dz  }|dk    r||         dk    |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   s`    lUl1<C!7!7 1<C!7!7 r   c                    d|z  }t          |          t          |          z   | j        k    r| j        t          |          z
  t          d          z
  }|}	 |                    dd|          }|dk     s|                     ||          dz  dk    rn<|dk     rD|dz
  }	 |                    d|dz             }|dk     s|                     ||          dz  dk    rn>|dk     rnf| j                            ||d|         z   dz              ||dz   d	         }d|dz   z  }t          |          t          |          z   | j        k    | j                            ||z   d
z              d	S )z3Write 'text' word-wrapped at self.width characters.z  z $Tr   r   r   r,   z $
Nr   )lenr   rfindr`   findr   r   )r   r   r(   leading_spaceavailable_spacespaces         r	   r%   zWriter._lineo   s   v-  3t99,tz99
 #j3}+=+==D		IO#Ejja//e11$>>BaGG	 qyy'!+))C33%QYY55dEBBQF!KK	
 qyyKmd1U7m;fDEEEa>D !F1H-M; -  3t99,tz99> 	-$.566666r   c                     |g S t          |t                    r|S 	 t          |t                    rt          |          S n# t          $ r Y nw xY w|gS r   )r!   r"   r?   	TypeError)r   inputs     r	   r>   zWriter._as_list   st    =IeT"" 	L	%%% #E{{"# 	 	 	D	 ws   #A 
AA)r   )r   )NNFNFNNN)NNNN)__name__
__module____qualname__r   r   r   r)   r0   r;   rN   rS   rU   rX   r`   r%   r>   r[   r   r	   r   r      s
               2 2 25 5 5 50 0 0 =A?C(,2 2 2 2, KO   <( ( () ) )B B B  "7 "7 "7 "7H    r   r   c                 J    d| vs
J d            |                      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 newlinesrZ   z$$r   )strings    r	   escaperp      s2     vE>>#t$$$r   )__doc__r   rer
   objectr   rp   r[   r   r	   <module>rt      s   
   				I I IN N N N NV N N Nb% % % % %r   