You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

30 lines
771 B

from __future__ import annotations
from typing import TYPE_CHECKING, Iterator, List, Optional
from typing_extensions import Self
from . import globals # pylint: disable=redefined-builtin
if TYPE_CHECKING:
from .element import Element
class Slot:
def __init__(self, parent: Element, name: str, template: Optional[str] = None) -> None:
self.name = name
self.parent = parent
self.template = template
self.children: List[Element] = []
def __enter__(self) -> Self:
globals.get_slot_stack().append(self)
return self
def __exit__(self, *_) -> None:
globals.get_slot_stack().pop()
globals.prune_slot_stack()
def __iter__(self) -> Iterator[Element]:
return iter(self.children)