Нужно регулярное выражение, чтобы исправить Construct 2.8 без имени
В Construct 2.8 поля стали безымянными, и мне нужен скрипт, который может более или менее автоматически переводить, аналогично скрипту Python 2to3. Для полного раскрытия, я сопровождающий. Это не только для меня, но и для всего сообщества.
Что нужно перевести:
ULInt32 -> Int32ub (actually its from {U,S}{B,L}Int{8,16,24,32,64})
field("name") -> "name" / field
Struct("name", ..., ...) -> "name" / Struct(..., ...)
(still adding...)
Инструмент регулярных выражений, который я использовал ранее:
#!/usr/bin/python3
import re, os, sys
def processfolder(top):
for root, dirs, files in os.walk(top):
for f in files:
if f.endswith('.py'):
processfile(os.path.join(root, f))
for d in dirs:
processfolder(os.path.join(root, d))
def processfile(fname):
print(fname+'... ', end='')
with open(fname, 'rt') as f:
txt = f.read()
txt = re.sub(r'???', lambda s: s.expand(r'\1'), txt)
with open(fname, 'wt') as f:
f.write(txt)
print('done')
processfolder(sys.argv[1])