Нужно регулярное выражение, чтобы исправить 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])

0 ответов

Другие вопросы по тегам