From 971f633eaadec381bda398f024bab42fa1311bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20P=C3=A9rez-Cerezo?= Date: Tue, 18 Sep 2018 00:37:18 +0200 Subject: added templating, Version 0.4.1 You can now use templating by creating a file containing "$$TEXT$$" somewhere. $$TEXT$$ will be replaced with the menu. --- bin/mensa | 9 ++++++++- mensa/frontends/html.py | 11 +++++++++-- mensa/frontends/plain-text.py | 9 ++++++++- setup.py | 2 +- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/bin/mensa b/bin/mensa index 3648607..a6537e7 100755 --- a/bin/mensa +++ b/bin/mensa @@ -3,6 +3,7 @@ import argparse from mensa import logic from mensa import base +import os parser = argparse.ArgumentParser(description='Fetch menus from various sources') parser.add_argument('rest', nargs="*", @@ -14,6 +15,7 @@ parser.add_argument('-f', '--formatter', dest='form', action='store', nargs=1, h parser.add_argument('-p', '--pos', dest='pos', action='store', nargs=1, help="Your current position") parser.add_argument('-d', '--dist', dest='dist', action='store_true', help="Show distances to restaurants") parser.add_argument('-r', '--radius', dest='rad', action='store', nargs=1, help="Radius to find restaurants in") +parser.add_argument('-t', '--template', dest='template', action='store', nargs=1, help="Template file to use") parser.add_argument('-g', '--vegetarian', dest='vegetarian', action='store_true', help='show only vegetarian meals') parser.add_argument('-G', '--vegan', dest='vegan', action='store_true', @@ -59,6 +61,11 @@ if args.vegetarian : if args.vegan : veggie = 2 +if args.template : + args.template = os.path.expanduser(args.template[0]) + if not os.path.exists(args.template) : + print("File not found: " + os.path.expanduser(args.template)) + exit(1) if args.list : @@ -70,4 +77,4 @@ if args.rest : restlist = args.rest foodl = logic.get_food(restlist, no_parallel=args.no_parallel, pos=args.pos, rad=args.rad, only_student_prices=args.student) -logic.render(foodl, form, only_veggie=veggie, only_student_prices=args.student, pos=args.pos, dist=args.dist) +logic.render(foodl, form, only_veggie=veggie, only_student_prices=args.student, pos=args.pos, dist=args.dist, template=args.template) diff --git a/mensa/frontends/html.py b/mensa/frontends/html.py index f3bf065..58f373c 100644 --- a/mensa/frontends/html.py +++ b/mensa/frontends/html.py @@ -29,8 +29,15 @@ class HTMLRenderer(IPlugin) : self.options = options r = "\n".join([self.format_restaurant(restaurant, food) for restaurant, food in foods ]) - - print(r) + if options.get("template") : + f = open(options["template"], "r") + template = f.read() + f.close() + print(template.replace("$$TEXT$$", r)) + else : + print(r) + + def register_renderer(self) : base.register_renderer(base.Renderer("html", "HTML Renderer", self)) diff --git a/mensa/frontends/plain-text.py b/mensa/frontends/plain-text.py index 8f3f736..cbd71e7 100644 --- a/mensa/frontends/plain-text.py +++ b/mensa/frontends/plain-text.py @@ -24,7 +24,14 @@ class TextRenderer(IPlugin) : r=r+"Distance: %.2f km\n" % base.dist(options["pos"], restaurant.pos) r= r + "".join([category+"\n" + "".join([self.render_line(i) for i in items]) for category,items in food.items()]) - print(r) + + if options.get("template") : + f = open(options["template"], "r") + template = f.read() + f.close() + print(template.replace("$$TEXT$$", r)) + else : + print(r) def register_renderer(self) : base.register_renderer(base.Renderer("plain-text", "Plain Text Renderer", self)) diff --git a/setup.py b/setup.py index b1c60c1..e337b60 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ def read(fname): setup( name = "mensa", - version = "0.4", + version = "0.4.1", author = "Gabriel PĂ©rez-Cerezo", author_email = "gabriel@gpcf.eu", description = ("A program that fetches menus from various restaurants. Pre-installed by default are various cafeterias around TU Berlin."), -- cgit v1.2.3