Profanity filter, please.
[kiosk.git] / page_builder.py
index 369d4426518f7b0a47301cfd652b2660ec93b2b8..235f51192debddc5ca851bdc1ea39334b3c37693 100644 (file)
@@ -1,5 +1,8 @@
+#!/usr/bin/env python3
+
 import sys
 
+
 class page_builder(object):
     LAYOUT_AUTO = 0
     LAYOUT_ONE_ITEM = 1
@@ -14,28 +17,29 @@ class page_builder(object):
         self.layout = page_builder.LAYOUT_AUTO
         self.items = []
         self.debug_info = None
+        self.custom_html = None
 
-    def set_layout(self, layout):
+    def set_layout(self, layout: int):
         self.layout = layout
         return self
 
-    def set_title(self, title):
+    def set_title(self, title: str):
         self.title = title
         return self
 
-    def set_style(self, style):
+    def set_style(self, style: str):
         self.style = style
         return self
 
-    def add_item(self, item):
+    def add_item(self, item: str):
         self.items.append(item)
         return self
 
-    def set_debug_info(self, debug_info):
+    def set_debug_info(self, debug_info: bool):
         self.debug_info = debug_info
         return self
 
-    def __pick_layout(self):
+    def __pick_layout(self) -> None:
         if len(self.items) == 1:
             self.layout = page_builder.LAYOUT_ONE_ITEM
         elif len(self.items) <= 4:
@@ -43,20 +47,24 @@ class page_builder(object):
         else:
             self.layout = page_builder.LAYOUT_MANY_ITEMS
 
-    def __render_header(self, f):
+    def __render_custom_html(self, f) -> None:
+        if self.custom_html is not None:
+            f.write(self.custom_html)
+
+    def __render_header(self, f) -> None:
         if self.title is not None:
             f.write("<H1>%s</H1>\n" % self.title)
         f.write("<HR>\n<TABLE WIDTH=99% BORDER=0>\n<TR>\n")
         if self.style is not None:
             f.write(self.style)
 
-    def __render_footer(self, f):
+    def __render_footer(self, f) -> None:
         f.write("</TR>\n</TABLE>\n")
 
-    def render_html(self, f):
+    def render_html(self, f) -> None:
         if self.layout == page_builder.LAYOUT_AUTO or self.layout is None:
             self.__pick_layout()
-
+        self.__render_custom_html(f)
         self.__render_header(f)
 
         items_per_row = None
@@ -77,7 +85,8 @@ class page_builder(object):
             items_per_row = 1
 
         else:
-            print "Error, unknown layout type: %d" % self.layout
+            print("Error, unknown layout type: %d" % self.layout)
+            return
 
         count = 0
         self.items.sort(key=len, reverse=True)
@@ -86,8 +95,11 @@ class page_builder(object):
             count += 1
             if count % items_per_row == 0:
                 f.write("</TR>\n<TR>\n")
-
         self.__render_footer(f)
 
-#x = page_builder()
-#x.set_title("title").add_item("item1").add_item("item2").add_item("item3").render_html(sys.stdout)
+    def set_custom_html(self, html):
+        self.custom_html = html
+
+
+# x = page_builder()
+# x.set_title("title").add_item("item1").add_item("item2").add_item("item3").render_html(sys.stdout)