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()