
    
3j$                     L    S r SSKrSSKrS r " S S\5      rS rS r0 4S jrg)	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    U R                  SS5      R                  SS5      R                  SS5      $ )Nz$ z$$  :z$:replace)words    L/home/wildlama/miniconda3/lib/python3.13/site-packages/ninja/ninja_syntax.pyescape_pathr
      s-    <<e$,,S$7??TJJ    c                       \ rS rSrSS jrS rS rSS jrS r   SS jr	  SS	 jr
S
 rS rS rS rSS jrS rSrg)Writer   c                     Xl         X l        g Noutputwidth)selfr   r   s      r	   __init__Writer.__init__   s    
r   c                 :    U R                   R                  S5        g )N
)r   writer   s    r	   newlineWriter.newline#   s    $r   c                     [         R                  " XR                  S-
  SSS9 H$  nU R                  R	                  SU-   S-   5        M&     g )N   F)break_long_wordsbreak_on_hyphensz# r   )textwrapwrapr   r   r   )r   textlines      r	   commentWriter.comment&   s?    MM$

Q38:DKKdTkD01:r   c                     Uc  g [        U[        5      (       a  SR                  [        S U5      5      nU R	                  U< SU< 3U5        g )Nr   z = )
isinstancelistjoinfilter_line)r   keyvalueindents       r	   variableWriter.variable+   s?    =eT""HHVD%01E

U+V4r   c                 N    U R                  SU-  5        U R                  SUSS9  g )Nzpool %sdepth   r/   r,   r0   )r   namer3   s      r	   poolWriter.pool2   s%    

9t#$guQ/r   Nc                    U R                  SU-  5        U R                  SUSS9  U(       a  U R                  SUSS9  U(       a  U R                  SUSS9  U(       a  U R                  SSSS9  U(       a  U R                  S	USS9  U(       a  U R                  S
SSS9  U(       a  U R                  SUSS9  U	(       a  U R                  SU	SS9  U
(       a  U R                  SU
SS9  g g )Nzrule %scommandr4   r5   descriptiondepfile	generator1r8   restatrspfilerspfile_contentdepsr6   )r   r7   r;   r<   r=   r>   r8   r@   rA   rB   rC   s              r	   ruleWriter.rule6   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
           	      $   [        U5      nU V
s/ s H  n
[        U
5      PM     nn
[        U5       V
s/ s H  n
[        U
5      PM     nn
U(       aF  [        U5       V
s/ s H  n
[        U
5      PM     nn
UR                  S5        UR                  U5        U(       aF  [        U5       V
s/ s H  n
[        U
5      PM     nn
UR                  S5        UR                  U5        U(       aF  [        U5       V
s/ s H  n
[        U
5      PM     nn
UR                  S5        UR                  U5        U R	                  SSR                  U5      < SSR                  U/U-   5      < 35        Ub  U R	                  SU-  5        U	b  U R	                  SU	-  5        U(       aU  [        U[        5      (       a  [        UR                  5       5      nO[        U5      nU H  u  pU R                  XSS	9  M     U$ s  sn
f s  sn
f s  sn
f s  sn
f s  sn
f )
N|z||zbuild r   z: z  pool = %sz  dyndep = %sr4   r5   )as_listr
   appendextendr,   r*   r(   dictiteritemsr0   )r   outputsrD   inputsimplicit
order_only	variablesimplicit_outputsr8   dyndepxout_outputs
all_inputsiteratorr-   vals                   r	   buildWriter.buildL   s   '"/67w!{1~w7.5fo>ok!no
>070AB0A1A0AHBc"h'29*2EF2EQ+a.2EJFd#j))01A)B D)BA !,A)B   Ds#/0

SXXk%:%(XXtfz.A%BD 	EJJ}t+,JJ/0)T**	 12	?$cq1 % C 8> C G Ds   G9G>H,H9Hc                 ,    U R                  SU-  5        g )Nz
include %sr,   r   paths     r	   includeWriter.includer   s    

<$&'r   c                 ,    U R                  SU-  5        g )Nzsubninja %sr]   r^   s     r	   subninjaWriter.subninjau   s    

=4'(r   c                 \    U R                  SSR                  [        U5      5      -  5        g )Nz
default %sr   )r,   r*   rH   )r   pathss     r	   defaultWriter.defaultx   s     

<#((75>"::;r   c                 d    SnUS-
  nUS:  a"  X   S:X  a  US-  nUS-  nUS:  a
  X   S:X  a  M  U$ )z<Returns the number of '$' characters right in front of s[i].r   r4   $ )r   sidollar_countdollar_indexs        r	   _count_dollars_before_index"Writer._count_dollars_before_index{   sP    1uQ1?c#9ALAL Q1?c#9 r   c                    SU-  n[        U5      [        U5      -   U R                  :  a  U R                  [        U5      -
  [        S5      -
  nUn UR                  SSU5      nUS:  d  U R                  X5      S-  S:X  a  OM4  US:  a<  US-
  n UR	                  SUS-   5      nUS:  d  U R                  X5      S-  S:X  a  OM6  US:  a  OYU R
                  R                  X1SU -   S-   5        XS-   S nSUS-   -  n[        U5      [        U5      -   U R                  :  a  M  U R
                  R                  X1-   S	-   5        g)
z3Write 'text' word-wrapped at self.width characters.z  z $r   r   r   r4   z $
Nr   )lenr   rfindrp   findr   r   )r   r#   r/   leading_spaceavailable_spacespaces         r	   r,   Writer._line   sV   v- 3t9,tzz9
 #jj3}+==D	IO#E

351AI44TAAEJ	  qy'!+ IIc5195E	88EIQN	 
 qyKKm1Um;fDEa>D !F1H-M; - 3t9,tzz9> 	-.56r   c                 8    U R                   R                  5         g r   )r   closer   s    r	   r{   Writer.close   s    r   r   )N   )r   )NNFNFNNN)NNNNNNN)__name__
__module____qualname____firstlineno__r   r   r%   r0   r8   rD   rZ   r`   rc   rg   rp   r,   r{   __static_attributes__rk   r   r	   r   r      s[     2
50 =A?C(,2, KOGK$L()<"7Hr   r   c                 @    U c  / $ [        U [        5      (       a  U $ U /$ r   )r(   r)   )inputs    r	   rH   rH      s%    }	%7Nr   c                 @    SU ;  d   S5       eU R                  SS5      $ )z^Escape a string such that it can be embedded into a Ninja file without
further interpretation.r   z$Ninja syntax does not allow newlinesrj   z$$r   )strings    r	   escaper      s)     vEEE>>#t$$r   c                 B   ^^ UU4S jn[         R                  " SX05      $ )zExpand a string containing $vars as Ninja would.

Note: doesn't handle the full Ninja variable syntax, but it's enough
to make configure.py's use of it work.
c                 x   > U R                  S5      nUS:X  a  gTR                  UTR                  US5      5      $ )Nr4   rj    )groupget)mvar
local_varsvarss     r	   expexpand.<locals>.exp   s6    ggaj#:~~c488C#455r   z
\$(\$|\w*))resub)r   r   r   r   s    `` r	   expandr      s    6
 66---r   )	__doc__r   r!   r
   objectr   rH   r   r   rk   r   r	   <module>r      s;   " 
 KKV K\% %' .r   