Files
lektor-recipes/data/generate-alternates.py
2019-11-25 18:26:24 +01:00

60 lines
1.5 KiB
Python

#!/usr/bin/env python3
import os
import sys
'''
Usage: python3 generate-alternates.py development/*
Input is a recipe folder.
Will take the `contents.lr` and extract `contents+de.lr` and `contents+en.lr`.
The content will be identical but its easier to edit this way.
No necessary redundant data fields.
'''
def prnt(key, val, inline=True):
return '' if not val else '{}:{}{}\n---\n'.format(
key, ' ' if inline else '\n\n', str(val).strip())
def splitContent(path):
mode = 1
idx = 0
with open(os.path.join(path, 'contents.lr'), 'r') as fin:
tmp = ['', '']
for line in fin:
if mode == 1:
tag = line.split(':')[0]
if tag in ['name', 'yield', 'ingredients', 'directions']:
idx = 1
else:
idx = 0
tmp[idx] += line
mode = 2
else:
tmp[idx] += line
if line == '---\n':
mode = 1
tmp[1] = tmp[1][:-4]
return tmp
def writeSplit(path):
de_file = os.path.join(path, 'contents+de.lr')
if not os.path.isdir(path) or os.path.exists(de_file):
return
print(path)
content = splitContent(path)
if not content[1]:
return
with open(de_file, 'w') as f:
f.write(content[1])
with open(os.path.join(path, 'contents+en.lr'), 'w') as f:
f.write(content[1])
with open(os.path.join(path, 'contents.lr'), 'w') as f:
f.write(content[0])
for x in sys.argv[1:]:
writeSplit(x)