Use csv file for intermediary parsing
This commit is contained in:
		
							parent
							
								
									4fe24d8e85
								
							
						
					
					
						commit
						f9eda09dea
					
				|  | @ -131,6 +131,7 @@ def get_symbols(line: str) -> (str, list[str]): | ||||||
| def write_translated(outfile, origfile, translation_file_paths): | def write_translated(outfile, origfile, translation_file_paths): | ||||||
|     for transfilepath in translation_file_paths: |     for transfilepath in translation_file_paths: | ||||||
|         print(f'- reading "{transfilepath}"') |         print(f'- reading "{transfilepath}"') | ||||||
|  |         parser.parse_to_csv(transfilepath) | ||||||
|         structure = parser.parse_to_structure(transfilepath) |         structure = parser.parse_to_structure(transfilepath) | ||||||
| 
 | 
 | ||||||
|         for line in origfile: |         for line in origfile: | ||||||
|  |  | ||||||
|  | @ -1,15 +1,16 @@ | ||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
| 
 | 
 | ||||||
|  | import csv | ||||||
| import os | import os | ||||||
| import config | import config | ||||||
| 
 | 
 | ||||||
| class OutputLine(): | class OutputLine(): | ||||||
|     def __init__(self, text_jp: str, text_en: str, type: str): |     def __init__(self, text_jp: str, text_en: str): | ||||||
|         self.text_jp = text_jp |         self.text_jp = text_jp | ||||||
|         self.text_en = text_en |         self.text_en = text_en | ||||||
|         self.type = type |         # self.type = type | ||||||
| 
 | 
 | ||||||
| def get_functions_from_file(filepath: str): | def get_functions_from_file(filepath: str) -> list[str]: | ||||||
|     """ |     """ | ||||||
|     Gets the function calls from a file and returns |     Gets the function calls from a file and returns | ||||||
|     a list of lists with the following structure: |     a list of lists with the following structure: | ||||||
|  | @ -89,33 +90,58 @@ def get_functions_from_file(filepath: str): | ||||||
| 
 | 
 | ||||||
|     return tokens |     return tokens | ||||||
| 
 | 
 | ||||||
|  | def parse_to_csv(filename: str): | ||||||
|  |     out_path = config.get('output_path') | ||||||
|  |     scripts_path = config.get('scripts_path') | ||||||
| 
 | 
 | ||||||
| def parse_to_structure(filename: str): |     csvname = os.path.join(out_path, filename + ".csv") | ||||||
|     scripts_path = config.get("scripts_path") |     escapechar = config.get('csv_escapechar') | ||||||
|  |     delchar = config.get('csv_delchar') | ||||||
| 
 | 
 | ||||||
|     tokens = get_functions_from_file( |     with open(csvname, 'w') as csvfile: | ||||||
|         os.path.join(scripts_path, filename) |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     structure = [] |         csv_writer = csv.writer( | ||||||
|  |             csvfile, | ||||||
|  |             delimiter=delchar, | ||||||
|  |             quoting=csv.QUOTE_ALL, | ||||||
|  |             quotechar=escapechar, | ||||||
|  |         ) | ||||||
| 
 | 
 | ||||||
|     for token in tokens: |         tokens = get_functions_from_file( | ||||||
|         function_name = token[0] |             os.path.join(scripts_path, filename) | ||||||
|  |         ) | ||||||
| 
 | 
 | ||||||
|         if function_name == "OutputLine": |         for token in tokens: | ||||||
|             structure.append(OutputLine( |             function_name = token[0] | ||||||
|                 text_jp=token[2][1:-1].replace('\\', ''), |  | ||||||
|                 text_en=token[4][1:-1].replace('\\', ''), |  | ||||||
|                 type=token[-1], |  | ||||||
|             )) |  | ||||||
| 
 | 
 | ||||||
|         elif ( |             if function_name == "OutputLine": | ||||||
|             function_name == "OutputLineAll" |                 #NOTE: [1:-1] Removes quotes | ||||||
|             and "Line_ContinueAfterTyping" == token[-1] |                 text_jp = token[2][1:-1].replace('\\', '').replace('\n', '') | ||||||
|             and "\\n" in token[2] |                 text_en = token[4][1:-1].replace('\\', '').replace('\n', '') | ||||||
|         ): |                 csv_writer.writerow([text_jp, text_en]) | ||||||
|             pass | 
 | ||||||
|             #count = token[2].count("\\n") | 
 | ||||||
|             # structure.append(["LineBreak", count]) | def parse_to_structure(filename: str) -> list[OutputLine]: | ||||||
|  |     out_path = config.get('output_path') | ||||||
|  |     csvname = os.path.join(out_path, filename + ".csv") | ||||||
|  |     escapechar = config.get('csv_escapechar') | ||||||
|  |     delchar = config.get('csv_delchar') | ||||||
|  | 
 | ||||||
|  |     with open(csvname, 'r') as csvfile: | ||||||
|  |         csv_reader = csv.reader( | ||||||
|  |             csvfile, | ||||||
|  |             delimiter=delchar, | ||||||
|  |             quotechar=escapechar, | ||||||
|  |         ) | ||||||
|  | 
 | ||||||
|  |         structure = [] | ||||||
|  | 
 | ||||||
|  |         for row in csv_reader: | ||||||
|  |             structure.append( | ||||||
|  |                 OutputLine( | ||||||
|  |                     text_jp=row[0], | ||||||
|  |                     text_en=row[1] | ||||||
|  |                 ) | ||||||
|  |             ) | ||||||
| 
 | 
 | ||||||
|     return structure |     return structure | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue