You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
|
|
# This file can be used as a template for search-and-replace operations across a bunch of files. |
|
# It's fairly slow, but it's still a lot faster than doing it by hand. |
|
# You can use foreach.exe or batch commands to run the script on a bunch of files at once. |
|
# It's a good idea to test your regular expressions beforehand though. To do this, just set g_bTest to 1. |
|
|
|
import sys |
|
import re |
|
|
|
|
|
g_bTest = 0 |
|
|
|
|
|
# Read the file in. |
|
f = open( sys.argv[1], "rt" ) |
|
lines = f.readlines() |
|
f.close() |
|
|
|
|
|
# First entry is the regular expression to look for. |
|
# Second entry is the text to replace it with. |
|
myREList = [ |
|
[re.compile( r"m_vecRenderOrigin" ), r"GetAbsOrigin()"], |
|
[re.compile( r"m_vecRenderAngles" ), r"GetAbsAngles()"], |
|
[re.compile( r"GetAbsOrigin\(\)\s*\=\s*(?P<setTo>.+);" ), r"SetAbsOrigin( \g<setTo> );" ], |
|
[re.compile( r"GetAbsAngles\(\)\s*\=\s*(?P<setTo>.+);" ), r"SetAbsAngles( \g<setTo> );" ], |
|
[re.compile( r"SetAbsOrigin\( GetAbsOrigin\(\) \);" ), r"" ], |
|
[re.compile( r"SetAbsAngles\( GetAbsAngles\(\) \);" ), r"" ], |
|
[re.compile( r"GetAbsOrigin\(\)\.Init\(\)" ), r"SetAbsOrigin( Vector( 0, 0, 0 ) )"], |
|
[re.compile( r"GetAbsAngles\(\)\.Init\(\)" ), r"SetAbsAngles( Vector( 0, 0, 0 ) )"], |
|
] |
|
|
|
|
|
# Now replace occurrences of it. |
|
i = 1 |
|
if g_bTest: |
|
# If g_bTest is set, just print out the matches. |
|
for x in lines: |
|
startX = x |
|
for curRE in myREList: |
|
x = curRE[0].sub( curRE[1], x ) |
|
|
|
if x != startX: |
|
print "%d: %s" % ( i, x ) |
|
i += 1 |
|
else: |
|
f = open( sys.argv[1], "wt" ) |
|
|
|
for x in lines: |
|
for curRE in myREList: |
|
x = curRE[0].sub( curRE[1], x ) |
|
|
|
f.write( x ) |
|
|
|
f.close() |
|
|
|
|
|
print sys.argv[1]
|
|
|