48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
import os
|
|
|
|
log_path = 'logs/20260325_103727/outputs/output_0013.txt'
|
|
with open(log_path, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
|
|
def extract(start_pat, end_pat, out_name):
|
|
start_marker = f'### `{start_pat}`'
|
|
end_marker = f'### `{end_pat}`'
|
|
|
|
start_pos = content.find(start_marker)
|
|
if start_pos == -1:
|
|
print(f"Start marker not found for {out_name}")
|
|
return
|
|
|
|
end_pos = content.find(end_marker, start_pos)
|
|
if end_pos == -1:
|
|
print(f"End marker not found for {out_name}")
|
|
return
|
|
|
|
block = content[start_pos:end_pos]
|
|
code_start = block.find('```cpp\r\n')
|
|
if code_start == -1:
|
|
code_start = block.find('```hpp\r\n')
|
|
if code_start == -1:
|
|
code_start = block.find('```cpp\n')
|
|
if code_start == -1:
|
|
code_start = block.find('```hpp\n')
|
|
|
|
if code_start == -1:
|
|
print(f"Code start marker not found for {out_name}")
|
|
return
|
|
|
|
code_start_offset = block.find('\n', code_start) + 1
|
|
code_end = block.rfind('```')
|
|
|
|
final_code = block[code_start_offset:code_end].strip()
|
|
|
|
out_path = os.path.join('tests/assets/gencpp_samples', out_name)
|
|
os.makedirs(os.path.dirname(out_path), exist_ok=True)
|
|
with open(out_path, 'w', encoding='utf-8', newline='\r\n') as f_out:
|
|
f_out.write(final_code)
|
|
print(f"Extracted {out_name}")
|
|
|
|
extract('C:/projects/gencpp/base/components/parser.cpp', 'C:/projects/gencpp/base/components/lexer.cpp', 'parser.cpp')
|
|
extract('C:/projects/gencpp/base/components/ast.hpp', 'C:/projects/gencpp/base/components/interface.parsing.cpp', 'ast.hpp')
|
|
extract('C:/projects/gencpp/base/components/types.hpp', 'C:/projects/gencpp/base/components/interface.hpp', 'types.hpp')
|