diff --git a/lobster/htmldoc/htmldoc.py b/lobster/htmldoc/htmldoc.py index f1e90528a..9a3fc1eda 100644 --- a/lobster/htmldoc/htmldoc.py +++ b/lobster/htmldoc/htmldoc.py @@ -18,6 +18,8 @@ # . import html +from abc import abstractmethod, ABC +from typing import List, Optional from lobster.htmldoc import assets @@ -37,25 +39,22 @@ """ -class Menu_Item: +class Menu_Item(ABC): def __init__(self, name): - assert isinstance(name, str) self.name = name - def generate(self, doc): - assert isinstance(doc, Document) - assert False + @abstractmethod + def generate(self, doc) -> List[str]: + pass class Menu_Link(Menu_Item): def __init__(self, name, target): - assert isinstance(target, str) super().__init__(name) self.target = target - def generate(self, doc): - assert isinstance(doc, Document) + def generate(self, doc) -> List[str]: rv = ( f'' @@ -75,8 +74,7 @@ def __init__(self, name): def add_link(self, name, target): self.items.append(Menu_Link(name, target)) - def generate(self, doc): - assert isinstance(doc, Document) + def generate(self, doc) -> List[str]: doc.style["#navbar .dropdown"] = { "float" : "left", @@ -144,8 +142,8 @@ def generate(self, doc): class Navigation_Bar: def __init__(self): - self.left_items = [] - self.right_items = [] + self.left_items: List[Menu_Item] = [] + self.right_items: List[Menu_Item] = [] def add_link(self, name, target, alignment="left"): assert alignment in ("left", "right") @@ -168,8 +166,6 @@ def add_dropdown(self, name, alignment="left"): return menu def generate(self, doc): - assert isinstance(doc, Document) - doc.style["#navbar"] = { "overflow" : "hidden", "background-color" : doc.primary_color, @@ -217,8 +213,6 @@ def generate(self, doc): class Document: def __init__(self, title, subtitle): - assert isinstance(title, str) - assert isinstance(subtitle, str) self.title = title self.subtitle = subtitle @@ -258,16 +252,18 @@ def __init__(self, title, subtitle): self.css = [] def add_line(self, line): - assert isinstance(line, str) if len(self.body) == 0: self.body.append('
') self.body.append(line) - def add_heading(self, level, text, anchor=None, html_identifier=False): - assert isinstance(level, int) - assert isinstance(text, str) + def add_heading( + self, + level: int, + text: str, + anchor: Optional[str] = None, + html_identifier: bool = False, + ): assert 2 <= level <= 7 - assert anchor is None or isinstance(anchor, str) if level == 2 and self.body: self.body.append("
")