Get symbols from each line

This commit is contained in:
Dusk 2024-02-18 20:28:09 +01:00
parent 8950d352ba
commit 5e7295cf72
2 changed files with 76 additions and 0 deletions

View File

@ -44,6 +44,49 @@ def process_sections():
origfile.close() origfile.close()
def get_symbols(line: str) -> list[str]:
res = []
inbetween = 0
i = 0
while i < len(line):
if line[i] in ['@', '/', '¥']:
if inbetween > 0:
res.append(line[i])
else:
res[-1] += line[i]
inbetween = 0
elif line[i:i+3] == '!sd':
if inbetween > 0:
res.append(line[i:i+3])
else:
res[-1] += line[i:i+3]
inbetween = 0
i += 3
elif line[i:i+2] in ['!d', '!w', '!s']:
x = i
i += 2
while i < len(line):
if line[i].isdigit():
i += 1
continue
if inbetween > 0:
res.append(line[x:i])
else:
res[-1] += line[x:i]
inbetween = 0
break
elif line[i] == '!':
raise Exception('Unhandled symbol', line)
else:
inbetween += 1
i += 1
return res
# Given a set of translation files, the original file and the output file # Given a set of translation files, the original file and the output file
# replace the japanese lines with the translated ones in a given section. # replace the japanese lines with the translated ones in a given section.
def write_translated(outfile, origfile, translation_file_paths): def write_translated(outfile, origfile, translation_file_paths):
@ -52,6 +95,7 @@ def write_translated(outfile, origfile, translation_file_paths):
structure = parser.parse_to_structure(transfilepath) structure = parser.parse_to_structure(transfilepath)
for i, line in enumerate(origfile): for i, line in enumerate(origfile):
# Check if the current line is a dialogue line or not
found = False found = False
for start, end in japanese_ranges: for start, end in japanese_ranges:
if start <= ord(line[0]) <= end: if start <= ord(line[0]) <= end:
@ -65,6 +109,10 @@ def write_translated(outfile, origfile, translation_file_paths):
# equivalent to the given original line. # equivalent to the given original line.
amount = line.count("@") + line.count("¥") + line.count('/') amount = line.count("@") + line.count("¥") + line.count('/')
symbols = get_symbols(line)
print(symbols, line, end='')
continue
outfile.write('`') outfile.write('`')
_printed_line = "" _printed_line = ""

28
src/test.py Normal file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env python3
def split_line(line: str) -> list[str]:
res = []
i = 0
while i < len(line):
if line[i] in ['@', '/', '¥']:
res.append(line[i])
elif line[i:i+3] == '!sd':
res.append(line[i:i+3])
i += 3
elif line[i:i+2] in ['!d', '!w']:
print("tefntyuf")
x = i
i += 2
while i < len(line):
if line[i].isdigit():
print(x, i)
i += 1
continue
res.append(line[x:i])
break
i += 1
return res