mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-23 13:59:40 +00:00
add vt_fmt.py script (#295)
This commit is contained in:
parent
56156d5577
commit
c76c584006
78
tools/vt_fmt.py
Executable file
78
tools/vt_fmt.py
Executable file
@ -0,0 +1,78 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
import struct
|
||||
import argparse
|
||||
import re
|
||||
|
||||
COLORS = [
|
||||
'BLACK',
|
||||
'RED',
|
||||
'GREEN',
|
||||
'YELLOW',
|
||||
'BLUE',
|
||||
'PURPLE',
|
||||
'CYAN',
|
||||
'WHITE',
|
||||
'LIGHTGRAY',
|
||||
'DARKGRAY',
|
||||
]
|
||||
|
||||
def re_match(exp, text):
|
||||
return re.compile(exp).match(text) is not None
|
||||
|
||||
def vt_fmt(text):
|
||||
curLiteral = False
|
||||
chars = ""
|
||||
|
||||
i = 0
|
||||
while i < len(text):
|
||||
if text[i:i+5].lower() == '\\x1b[':
|
||||
if curLiteral:
|
||||
chars += '\"'
|
||||
if i > 0:
|
||||
chars += ' '
|
||||
|
||||
i += 5
|
||||
|
||||
code = text[i:text.find('m', i)]
|
||||
i += len(code)
|
||||
|
||||
if re_match('^4[0-9];3[0-9]$', code):
|
||||
chars += 'VT_COL(' + COLORS[int(code[1])] + ', ' + COLORS[int(code[4])] + ')'
|
||||
elif re_match('^4[0-9]$', code):
|
||||
chars += 'VT_BGCOL(' + COLORS[int(code[1])] + ')'
|
||||
elif re_match('^3[0-9]$', code):
|
||||
chars += 'VT_FGCOL(' + COLORS[int(code[1])] + ')'
|
||||
elif len(code) == 0:
|
||||
chars += 'VT_RST'
|
||||
else:
|
||||
raise Exception('Invalid String')
|
||||
|
||||
curLiteral = False
|
||||
else:
|
||||
if not curLiteral:
|
||||
chars += ' \"'
|
||||
chars += text[i]
|
||||
curLiteral = True
|
||||
|
||||
i += 1
|
||||
|
||||
|
||||
if curLiteral:
|
||||
chars += '\"'
|
||||
|
||||
return chars
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Properly formats VT macros')
|
||||
parser.add_argument('string', help='String to format')
|
||||
args = parser.parse_args()
|
||||
|
||||
print(vt_fmt(args.string))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user