import html
import sys
import urllib.parse
template = """
__title__
__scene__
__description__
__choices__
"""
def generate_html(name, scene, description, choices):
# HTML escape the plain text fields
name = html.escape(name)
scene = html.escape(scene)
# Create a list of paragraphs from the description array
description = ['%s
' % html.escape(paragraph) for paragraph in description]
description = '\n'.join(description)
# Generate a list of links from choices array
choices = ['%s' % (urllib.parse.quote(target), text) for target, text in choices]
choices = '\n'.join(choices)
choices = '' % choices
title = '%s - %s' % (name, scene)
return template.replace('__title__', title).replace('__scene__', scene).replace('__description__', description).replace('__choices__', choices)
def parse_file(contents):
lines = contents.replace('\r\n', '\n').split('\n')
scene = lines[0]
description = []
choices = []
for line in lines[1:]:
if line[0:1] == '>':
# Choice
target, _, text = line[1:].strip().partition(' ')
choices.append((target, text))
else:
description.append(line)
description = '\n'.join(description).split('\n\n')
while '' in description:
description.remove('')
return scene, description, choices
def main():
name = sys.argv[1]
with open(sys.argv[2], 'r') as f:
contents = f.read()
scene, description, choices = parse_file(contents)
print(generate_html(name, scene, description, choices))
if __name__ == '__main__':
main()