commit b2b6a070d1e8b208ca885bb6a4209e24bf2c0c22 Author: LongHairedHacker Date: Thu Feb 26 20:26:39 2015 +0100 Just playing around a bit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8aa978b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +virtenv diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5a9d4d5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +Jinja2==2.7.3 +MarkupSafe==0.23 diff --git a/test_input/rendered_root/index.html b/test_input/rendered_root/index.html new file mode 100644 index 0000000..43bd345 --- /dev/null +++ b/test_input/rendered_root/index.html @@ -0,0 +1,7 @@ + + + A cool new Page + + + + \ No newline at end of file diff --git a/test_input/rendered_root/page2.html b/test_input/rendered_root/page2.html new file mode 100644 index 0000000..f0fa0bb --- /dev/null +++ b/test_input/rendered_root/page2.html @@ -0,0 +1,7 @@ + + + An other cool Page + + + + \ No newline at end of file diff --git a/test_input/rendered_root/subdir/page3.html b/test_input/rendered_root/subdir/page3.html new file mode 100644 index 0000000..da0660a --- /dev/null +++ b/test_input/rendered_root/subdir/page3.html @@ -0,0 +1,7 @@ + + + Yet an other cool Page + + + + \ No newline at end of file diff --git a/test_input/templates/base.html b/test_input/templates/base.html new file mode 100644 index 0000000..4cde369 --- /dev/null +++ b/test_input/templates/base.html @@ -0,0 +1,7 @@ + + + {{page_title}} + + + + diff --git a/test_input/testblog.py b/test_input/testblog.py new file mode 100644 index 0000000..acffdf1 --- /dev/null +++ b/test_input/testblog.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python2 + +import sys +sys.path.append('../') + +from verdandi.verdandi import Verdandi +from verdandi.modules.page import Page + +class TestPage1(Page): + title = "A cool new Page" + +class TestPage2(Page): + title = "An other cool Page" + url = "page2.html" + +class TestPage3(Page): + title = "Yet an other cool Page" + url = "subdir/page3.html" + + +class TestBlog(Verdandi): + modules = [TestPage1(), + TestPage2(), + TestPage3()] + + +testblog = TestBlog() +testblog.run() diff --git a/verdandi/__init__.py b/verdandi/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/verdandi/__init__.pyc b/verdandi/__init__.pyc new file mode 100644 index 0000000..2c349ab Binary files /dev/null and b/verdandi/__init__.pyc differ diff --git a/verdandi/mixins/__init__.py b/verdandi/mixins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/verdandi/mixins/__init__.pyc b/verdandi/mixins/__init__.pyc new file mode 100644 index 0000000..063bbed Binary files /dev/null and b/verdandi/mixins/__init__.pyc differ diff --git a/verdandi/mixins/menuitemmixin.py b/verdandi/mixins/menuitemmixin.py new file mode 100644 index 0000000..8cba70f --- /dev/null +++ b/verdandi/mixins/menuitemmixin.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python2 + +class MenuItemMixin(object): + + menu_title = "Menu title" + menu_label = None + menu_parent = None + url = "index.html" + + def process_message(self, message): + if message == None: + return [{'type': 'menu_add_item', + 'title' : self.menu_title, + 'parent' : self.menu_parent, + 'label' : self.menu_label, + 'url' : self.url}] + + return [] diff --git a/verdandi/mixins/menuitemmixin.pyc b/verdandi/mixins/menuitemmixin.pyc new file mode 100644 index 0000000..ed66b2f Binary files /dev/null and b/verdandi/mixins/menuitemmixin.pyc differ diff --git a/verdandi/mixins/messagemixin.py b/verdandi/mixins/messagemixin.py new file mode 100644 index 0000000..f63f402 --- /dev/null +++ b/verdandi/mixins/messagemixin.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python2 + +class MessageMixin(object): + + def process_message(self, message): + return [] diff --git a/verdandi/mixins/messagemixin.pyc b/verdandi/mixins/messagemixin.pyc new file mode 100644 index 0000000..06f9e36 Binary files /dev/null and b/verdandi/mixins/messagemixin.pyc differ diff --git a/verdandi/mixins/rendermixin.py b/verdandi/mixins/rendermixin.py new file mode 100644 index 0000000..09329c8 --- /dev/null +++ b/verdandi/mixins/rendermixin.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python2 + +class RenderMixin(object): + + def render(self, output_directory, jinja_env): + return None diff --git a/verdandi/mixins/templatemixin.py b/verdandi/mixins/templatemixin.py new file mode 100644 index 0000000..ce597cd --- /dev/null +++ b/verdandi/mixins/templatemixin.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python2 + +import os + +class TemplateMixin(object): + template = "base.html" + url = "index.html" + context = {} + + def get_context(self): + return self.context + + def render(self, output_directory, jinja_env): + template = jinja_env.get_template(self.template) + html = template.render(self.get_context()) + out_path = os.path.join(output_directory, self.url) + out_dir = os.path.dirname(out_path) + if not os.path.isdir(out_dir): + os.mkdir(out_dir) + out_file = open(out_path, "wb") + out_file.write(html) + out_file.close() diff --git a/verdandi/mixins/templatemixin.pyc b/verdandi/mixins/templatemixin.pyc new file mode 100644 index 0000000..8642b8d Binary files /dev/null and b/verdandi/mixins/templatemixin.pyc differ diff --git a/verdandi/module.pyc b/verdandi/module.pyc new file mode 100644 index 0000000..1744c09 Binary files /dev/null and b/verdandi/module.pyc differ diff --git a/verdandi/modules/__init__.py b/verdandi/modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/verdandi/modules/__init__.pyc b/verdandi/modules/__init__.pyc new file mode 100644 index 0000000..67d9204 Binary files /dev/null and b/verdandi/modules/__init__.pyc differ diff --git a/verdandi/modules/page.py b/verdandi/modules/page.py new file mode 100644 index 0000000..41c3b8a --- /dev/null +++ b/verdandi/modules/page.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python2 + +from verdandi.mixins.templatemixin import TemplateMixin +from verdandi.mixins.menuitemmixin import MenuItemMixin + + +class Page(TemplateMixin, MenuItemMixin): + title = 'Page Title' + + def get_context(self): + context = super(Page,self).get_context() + context['page_title'] = self.title + return context + + + + diff --git a/verdandi/modules/page.pyc b/verdandi/modules/page.pyc new file mode 100644 index 0000000..b5b4a51 Binary files /dev/null and b/verdandi/modules/page.pyc differ diff --git a/verdandi/verdandi.py b/verdandi/verdandi.py new file mode 100644 index 0000000..633a96f --- /dev/null +++ b/verdandi/verdandi.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python2 + +import os +from jinja2 import Environment, FileSystemLoader + +class Verdandi(object): + + template_dir = "templates" + output_directory = "rendered_root" + modules = [] + + + def __init__(self): + self.jinja_env = Environment(loader=FileSystemLoader(self.template_dir)) + + + def send_message(self, message): + results = [] + + for module in self.modules: + results += module.process_message(message) + + return results + + + def pass_messages(self): + messages = self.send_message(None) + + while len(messages) > 0: + message = messages.pop() + print message + messages = messages + self.send_message(message) + + + def render(self): + if not os.path.exists(self.output_directory): + os.mkdir(self.output_directory) + for module in self.modules: + module.render(self.output_directory, self.jinja_env) + + + def run(self): + self.pass_messages() + self.render() diff --git a/verdandi/verdandi.pyc b/verdandi/verdandi.pyc new file mode 100644 index 0000000..cdceb3f Binary files /dev/null and b/verdandi/verdandi.pyc differ