Skip to content

Commit b1620d4

Browse files
committed
Use ABC base class
The base class `Menu_Item` had a statement `assert false`, which is a code smell. In order to remove this, the class now inherits from `ABC` and the `generate` method is an abstract method.
1 parent 79dfe7f commit b1620d4

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

lobster/htmldoc/htmldoc.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
# <https://www.gnu.org/licenses/>.
1919

2020
import html
21+
from abc import abstractmethod, ABC
22+
from typing import List
2123

2224
from lobster.htmldoc import assets
2325

@@ -37,14 +39,13 @@
3739
"""
3840

3941

40-
class Menu_Item:
42+
class Menu_Item(ABC):
4143
def __init__(self, name):
42-
assert isinstance(name, str)
4344
self.name = name
4445

45-
def generate(self, doc):
46-
assert isinstance(doc, Document)
47-
assert False
46+
@abstractmethod
47+
def generate(self, doc) -> List[str]:
48+
pass
4849

4950

5051
class Menu_Link(Menu_Item):
@@ -54,7 +55,7 @@ def __init__(self, name, target):
5455

5556
self.target = target
5657

57-
def generate(self, doc):
58+
def generate(self, doc) -> List[str]:
5859
assert isinstance(doc, Document)
5960
rv = (
6061
f'<a href="{self.target}" '
@@ -75,7 +76,7 @@ def __init__(self, name):
7576
def add_link(self, name, target):
7677
self.items.append(Menu_Link(name, target))
7778

78-
def generate(self, doc):
79+
def generate(self, doc) -> List[str]:
7980
assert isinstance(doc, Document)
8081

8182
doc.style["#navbar .dropdown"] = {
@@ -144,8 +145,8 @@ def generate(self, doc):
144145

145146
class Navigation_Bar:
146147
def __init__(self):
147-
self.left_items = []
148-
self.right_items = []
148+
self.left_items: List[Menu_Item] = []
149+
self.right_items: List[Menu_Item] = []
149150

150151
def add_link(self, name, target, alignment="left"):
151152
assert alignment in ("left", "right")

0 commit comments

Comments
 (0)