
    &ft                         d dl mZ d dlZd dlZd dlZd dlZd dlZej                  dk(  rdndZd Z	d Z
d Zd	 Zd
 Zd Zd Zd ZddZy)    )with_statementNwin32z

c                 t   d}	 t        j                  | dd      5 }|j                         }ddd       |k(  ryt        j                  |        t        j                  | dd      5 }|j                  |       ddd       t        | d|       y# 1 sw Y   fxY w# t
        $ r d}Y [w xY w# 1 sw Y   7xY w)z If the file contents are different to updated then copy updated into the
    file else leave alone so Mercurial and make don't treat it as modified. Changedrutf-8NNewwz:0: )codecsopenreadosunlinkIOErrorwriteprint)filenameupdatednewOrChangedinfileoriginaloutfiles         a/home/ruben/repo/codequery/scintilla550/scintilla/qt/ScintillaEdit/../../scripts/FileGenerator.py
UpdateFiler      s     L[[30 	%F{{}H	%h
		( 
XsG	, g	,
/0	% 	%   s8   B BB B &B.BB B+*B+.B7c                    d}d}d}g }| j                  d      D ]{  }|j                         j                  |dz         }	|r|	s|j                  |       |	r|r|j                  |       d}d}n|s|s|j                  |dz         r|r|j                  |       |t	        |dz         d  }
|dk(  rd|
v r|
j                  dd      }
d}|
d   t        j                  v rt        |
d d       }|
d	d  }
|
j                  d
d      }
|
j                  dd      }
|
j                  dd      }
|
j                  dd      }
|
j                  d      }|
j                  d      }|
d | }d}|j                  d      rd}nt	        |      }||z  }|
|d	z   | }||   D ]U  }|j                  d|      }|r|t	        |      z   dk\  r|dz  }d}||z  }|t	        |      z  }|j                  d      sTd}W |
|d	z   d  }||z  }|j                  dt              }|j                  |       n|j                  |d          d}|j                         j                  |dz         s$|j                         j                  |dz         sed}|sk|j                  |       ~ |D cg c]  }|j                  d       }}t        j                  |      t        z   S c c}w )N   Fr   z++Autogeneratedz**z<!--z -->    z\\z\nr   z\t	\z\(z\)z\*P   z\
Tz--Autogeneratedz~~Autogeneratedz 	)
splitlineslstrip
startswithappendlenreplacestringdigitsintfindendswithlineEndextendrstripjoin)inputcommentPrefix
retainDefslistscopying	generatedlistidoutputlineisStartGenerated
definitionstartRepeat	endRepeatintrooutposmiddleiitemoutros                       r   CopyWithInsertionrG   0   s   GIFF  # <$;;=33MDU4UV+MM$d#GI}t34MM$'!#md&:";"<=
!V+&J2F!+!3!3FB!?Ja=FMM1 BQ0F!+ABJ'//?
'//t<
'//t<
'//=
(ooe4&OOE2	"<K0>>$'Ce*Cu#KM)<v  A!>>%3Dc$i2 5v4KC3t9$C}}T*  #9Q;<0ukk$0c" eAh'I;;=##M4E$EFKKM$$]5F%FGGd#y<$z .44Tdkk% 4F4<<')) 5s   Kc                     	 t        j                  | dd      5 }|j                         }ddd       t        |||      }t	        ||       y# 1 sw Y   $xY w# t
        $ r t        d| z         Y yw xY w)&Generate 'outpath' from 'inpath'.
    r   zUTF-8NzCan not open %s)r   r   r   rG   r   r   r   )inpathoutpathr4   r5   r6   r   r   r   s           r   GenerateFilerL   u   st    *[[g. 	%&{{}H	%#Hm7G$		% 	%
  *&()*s'   A A"A AA A32A3c                 (    t        | ||| |k(  g|  y)rI   N)rL   )rJ   rK   r4   r6   s       r   GeneraterN      s     -71BKUK    c                      t        | | |g|  y)zRegenerate the given file.
    N)rN   )r   r4   r6   s      r   
RegeneraterQ      s     Xx77rO   c                    g }d}t        j                  | dd      5 }|j                         D ]  }|j                         }|j	                  d      r#|j                  dd      j                  dd      }nN|j	                  d      r=||k(  r8|j                  d      \  }}	}
|
j                  d      \  }}}||	z   |z   |z   |z   }|j                  |        	 ddd       dj                  |      }t        | |       y# 1 sw Y   'xY w)	zJReplace a single string value preceded by 'key' in an XML plist file.
    r   rbr	   z<key>z</key>z<string>z	</string>N)
r   r   	readlinesstripr&   r)   	partitionr'   r2   r   )pathkeyvaluelines
keyCurrentfr;   lsstarttagrest_valetagendcontentss                  r   UpdateLineInPlistFilere      s     EJ	T4	) 
QKKM 		DB}}W%ZZ4<<XrJ
z*$'+~~j'A$E3&*nn[&AOD$ 3;.5;DLL		
 wwu~HtX
 
s   B9C<<Dc                    g }d}t        j                  | dd      5 }|j                         D ]J  }|j                         }|s%|j	                  |      r|j                  |       d}:|j                  |       L 	 d d d        |st        |  d| d       t        j                  |      t        z   }t        | |       y # 1 sw Y   ExY w)NFr   r	   Tz:0: Can't find '')
r   r   rT   r1   r&   r'   r   r/   r2   r   )rW   
linePrefixlineReplacerZ   r   r\   r;   rd   s           r   UpdateLineInFilerj      s    EG	T3	( #AKKM 	#D;;=Dtz:[)T"	## &zl!45||E"W,HtX# #s   AB??Cc                 D    |j                  |      |z   }t        | |       y)zVJoin the lines with the lineEndToUse then update file if the result is different.
    N)r2   r   )rW   rZ   lineEndToUserd   s       r   UpdateFileFromLinesrm      s#       ',6HtXrO   c                     t        j                  | dd      5 }|j                         }d d d        t        j                  |||      }t        | |       y # 1 sw Y   .xY w)Nr   r	   )r   r   r   resubr   )rW   matchr)   countr\   rd   s         r   ReplaceREInFilers      sR    	T3	( A668vveWh6HtX s   AA)r   )
__future__r   r   r   ro   r*   sysplatformr/   r   rG   rL   rN   rQ   re   rj   rm   rs    rO   r   <module>rx      sU    & " " "LLG+&18C*J*L
8
& rO   