bowl/cheuph/element_tree_renderer.py
2019-06-08 09:10:59 +00:00

32 lines
835 B
Python

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