45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
import json
|
|
|
|
def parse_journal_entries(file_path):
|
|
entries = []
|
|
current_entry = {}
|
|
|
|
with open(file_path, 'r') as file:
|
|
for line in file:
|
|
line = line.strip()
|
|
if line.startswith('│'):
|
|
account, amount = line[1:].split()
|
|
current_entry['entries'].append({
|
|
'account': account,
|
|
'amount': float(amount)
|
|
})
|
|
elif line:
|
|
if current_entry:
|
|
entries.append(current_entry)
|
|
current_entry = {'date': line, 'entries': []}
|
|
|
|
if current_entry:
|
|
entries.append(current_entry)
|
|
|
|
return entries
|
|
|
|
def convert_to_json(entries):
|
|
formatted_entries = []
|
|
for entry in entries:
|
|
formatted_entry = {
|
|
'date': entry['date'],
|
|
'entries': []
|
|
}
|
|
for sub_entry in entry['entries']:
|
|
formatted_entry['entries'].append({
|
|
sub_entry['account']: sub_entry['amount']
|
|
})
|
|
formatted_entries.append(formatted_entry)
|
|
return json.dumps(formatted_entries, indent=4)
|
|
|
|
file_path = 'main.gl'
|
|
journal_entries = parse_journal_entries(file_path)
|
|
json_data = convert_to_json(journal_entries)
|
|
print(json_data)
|
|
|