Make classes more generic

This commit is contained in:
Joscha 2019-06-03 15:55:58 +00:00
parent f4c0416398
commit 052bbfb6d2
5 changed files with 265 additions and 0 deletions

View 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