
    9i              	           S r SSKrSSKrSSKJr  SSKJrJrJrJ	r	J
r
Jr  S\S\4S jr " S S	\5      rS
\	\\\\   4      S\\   4S jrS\S\4S jr0 4S\S\\\4   S\\\4   S\4S j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.
    N)TextIOWrapper)DictListMatchOptionalTupleUnionwordreturnc                 f    U R                  SS5      R                  SS5      R                  SS5      $ )Nz$ z$$  :z$:replace)r
   s    R/var/www/html/land-doc-ocr/venv/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\S\SS4S jjrS0S jrS\SS4S	 jr	 S1S
\S\
\\\\\\\   4      S\SS4S jjrS\S\SS4S jr        S2S\S\S\
\   S\
\   S\S\
\   S\S\
\   S\
\   S\
\\\\   4      SS4S jjr       S3S\\\\   4   S\S\
\\\\   4      S\
\\\\   4      S\
\\\\   4      S \
\\\\\
\\\\   4      4      \\\
\\\\   4      4   4      S!\
\\\\   4      S\
\   S"\
\   S\\   4S# jjrS$\SS4S% jrS$\SS4S& jrS'\\\\   4   SS4S( jrS)\S*\S\4S+ jrS1S\S\SS4S, jjrS0S- jrS.rg)4Writer    outputwidthr   Nc                     Xl         X l        g Nr   r   )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   textc                     [         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   r%   lines      r   commentWriter.comment(   s?    MM$

Q38:DKKdTkD01:r   keyvalueindentc                     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   r/   r0   r1   s       r   variableWriter.variable-   sA     =eT""HHVD%01E

U+V4r   namedepthc                 N    U R                  SU-  5        U R                  SUSS9  g )Nzpool %sr;      r1   r7   r8   )r   r:   r;   s      r   poolWriter.pool9   s%    

9t#$guQ/r   commanddescriptiondepfile	generatorr@   restatrspfilerspfile_contentdepsc                    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 %srB   r=   r>   rC   rD   rE   1r@   rF   rG   rH   rI   r?   )r   r:   rB   rC   rD   rE   r@   rF   rG   rH   rI   s              r   rule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   outputsrL   inputsimplicit
order_only	variablesimplicit_outputsdyndepc
           	      $   [        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 = %sr=   r>   )as_listr   appendextendr7   r5   r3   dictiteritemsr8   )r   rN   rL   rO   rP   rQ   rR   rS   r@   rT   xout_outputs
all_inputsiteratorr/   vals                   r   buildWriter.build]   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pathc                 ,    U R                  SU-  5        g )Nz
include %sr7   r   rd   s     r   includeWriter.include   s    

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

=4'(r   pathsc                 \    U R                  SSR                  [        U5      5      -  5        g )Nz
default %sr   )r7   r5   rW   )r   rm   s     r   defaultWriter.default   s     

<#((75>"::;r   sic                 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   r=   $ )r   rq   rr   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'   r=   z $
Nr    )lenr   rfindrx   findr   r!   )r   r%   r1   leading_spaceavailable_spacespaces         r   r7   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   N)r   )NNFNFNNN)NNNNNNN)__name__
__module____qualname____firstlineno__r   intr   r#   strr-   r   r	   boolfloatr   r8   r@   rL   r   r   rb   rh   rk   ro   rx   r7   r   __static_attributes__ru   r   r   r   r       s    } S $  2C 2D 2 	
5
5 dCT#Y>?@
5 	
5
 

50 0S 0T 0 &*!%"!%)-0422 2 c]	2
 #2 2 sm2 2 #2 "#2 uS$s)^,-2 
2H 37486: <@" $3sDI~&3 3 sDI~./	3
 5d3i013 U3S	>233 U3sDI~)> ??@AS(5d3i#899:<
3 #5d3i#893 sm3 3  
c!3j(C (D ()S )T )<U3S	>2 <t <S S S "7# "7s "74 "7Hr   r   inputc                 @    U c  / $ [        U [        5      (       a  U $ U /$ r   )r3   r4   )r   s    r   rW   rW      s%    }	%7Nr   stringc                 @    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 newlinesrt   z$$r   )r   s    r   escaper      s)     vEEE>>#t$$r   vars
local_varsc                 l   ^^ S[         [           S[        4UU4S j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.
mr   c                 x   > U R                  S5      nUS:X  a  gTR                  UTR                  US5      5      $ )Nr=   rt    )groupget)r   varr   r   s     r   expexpand.<locals>.exp   s6    ggaj#:~~c488C#455r   z
\$(\$|\w*))r   r   resub)r   r   r   r   s    `` r   expandr      s2    6uSz 6c 6 6
 66---r   )__doc__r   r*   ior   typingr   r   r   r   r   r	   r   r   objectr   rW   r   r   ru   r   r   <module>r      s   " 
   < <Kc Kc KiV iX8E#tCy.12 tCy %3 %3 % LN .3 .d38n .$sCx. .RU .r   