From aac9e52d138fef142b67a85921bff643060cf277 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Tue, 15 Dec 2015 20:50:39 -0500 Subject: HTMLRender -> RenderHTML + changes to it. `RenderHTML` (was `HTMLRender`) now uses `PackagLoader` instead of FileSystemLoader and the template are loaded from the templates/ directory. --- lps_gen.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'lps_gen.py') diff --git a/lps_gen.py b/lps_gen.py index 9476e75..478d4ef 100644 --- a/lps_gen.py +++ b/lps_gen.py @@ -19,14 +19,15 @@ # . import json -import jinja2 from argparse import ArgumentParser from collections import OrderedDict from os import path +from jinja2 import Environment, PackageLoader from mistune import Renderer, Markdown + # Python dictionary that will contain the lp schedule. lps_dict = OrderedDict() @@ -62,6 +63,10 @@ class LPSRenderer(Renderer): def header(self, text, level, raw=None): global lps_dict + utf8_text = text + + # jinja2 will encode text back to utf8. + text = text.decode('utf8') if level == 2: # Add new day. @@ -79,7 +84,7 @@ class LPSRenderer(Renderer): # to 0. self.no_paragraph = 0 - return super(LPSRenderer, self).header(text, level, raw) + return super(LPSRenderer, self).header(utf8_text, level, raw) def paragraph(self, text): @@ -87,6 +92,9 @@ class LPSRenderer(Renderer): p = super(LPSRenderer, self).paragraph(text) + # jinja2 will encode text back to utf8. + text = text.decode('utf8') + if self.no_paragraph == 0: # Speaker if len(text.split(', ')) == 1: @@ -133,18 +141,19 @@ class LPSMarkdown(Markdown): html = super(LPSMarkdown, self).parse(text) return lps_dict -def HTMLRender(_dict): - """Render html from a dictionary and returns a string. - Uses jinja2 and HTML template file. - """ - templateLoader = jinja2.FileSystemLoader( searchpath="./" ) - templateEnv = jinja2.Environment( loader=templateLoader ) - TEMPLATE_FILE = "tests/files/index.html" - template = templateEnv.get_template( TEMPLATE_FILE ) - _data = {'res':_dict} - lps_output = template.render( _data ) - return lps_output +def RenderHTML(lps_dict, year): + """Renders LP schedule in HTML from a python dictionary. + + Returns the HTML as a string. + """ + env = Environment(loader=PackageLoader('lps_gen', + 'templates'), + trim_blocks=True, lstrip_blocks=True) + template = env.get_template('lp-sch-%s.jinja2' % year) + + return template.render(schedule=lps_dict) + def main(): parser = ArgumentParser() @@ -156,9 +165,6 @@ def main(): markdown = LPSMarkdown() lps_dict = markdown(lps_md_content) - print HTMLRender(lps_dict) - - #print json.dumps(lps_dict, indent=4) if __name__ == "__main__": -- cgit v1.2.3