Make classes more generic
This commit is contained in:
parent
f4c0416398
commit
052bbfb6d2
5 changed files with 265 additions and 0 deletions
32
cheuph/element_tree_renderer.py
Normal file
32
cheuph/element_tree_renderer.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
from abc import ABC, abstractmethod
|
||||
from dataclasses import dataclass
|
||||
from typing import Generic, TypeVar
|
||||
|
||||
from .attributed_lines import AttributedLines
|
||||
from .element import Element, Id
|
||||
from .element_renderer import ElementRenderer
|
||||
from .element_supply import ElementSupply
|
||||
|
||||
__all__ = ["ElementTreeRenderer", "CursorTreeRenderer"]
|
||||
|
||||
E = TypeVar("E", bound=Element)
|
||||
|
||||
class ElementTreeRenderer(ABC, Generic[E]):
|
||||
def __init__(self,
|
||||
supply: ElementSupply[E],
|
||||
renderer: ElementRenderer[E],
|
||||
) -> None:
|
||||
self.supply = supply
|
||||
self.renderer = renderer
|
||||
|
||||
self.lines = AttributedLines()
|
||||
|
||||
@abstractmethod
|
||||
def rerender(self) -> None:
|
||||
pass
|
||||
|
||||
class CursorTreeRenderer(ElementTreeRenderer[E]):
|
||||
pass # TODO
|
||||
|
||||
#class HighlightTreeRenderer(ElementTreeRenderer[E]):
|
||||
# pass
|
||||
Loading…
Add table
Add a link
Reference in a new issue