Source code for tablate.classes.options.html.style.subclasses.ElementStyler

from copy import copy
from typing import Callable

from tablate.classes.options.html.style.mixins.AddStyleMixin import AddStyleMixin
from tablate.classes.options.html.style.mixins.ClassNameMixin import ClassNameMixin
from tablate.classes.options.html.style.subclasses.TextStyler import TextStyler
from tablate.classes.options.html.style.utilities.selectors import column_selector, row_selector
from tablate.classes.options.html.style.utilities.style_types import ElementSelectorDict, SelectorDictUnion, \
    ElementSelectorDictKeys, StyleItem


[docs] class ElementStyler(ClassNameMixin, AddStyleMixin): def __init__(self, selector: ElementSelectorDict, create_style: Callable[[SelectorDictUnion, StyleItem], None]) -> None: self._selector_dict = selector self._create_style = create_style
[docs] def column(self, column_index: int = None): selector = self.__create_selector_dict(column=True, column_index=column_index) return ElementStyler(selector=selector, create_style=self._create_style)
[docs] def row(self, row_index: int = None): selector = self.__create_selector_dict(row=True, row_index=row_index) return ElementStyler(selector=selector, create_style=self._create_style)
@property def text(self): selector = self.__create_selector_dict(text_cell=True) return TextStyler(selector=selector, create_style=self._create_style) def __create_selector_dict(self, column: bool = False, column_index: int = None, row: bool = None, row_index: int = None, text_cell: bool = False) -> ElementSelectorDict: new_selector_dict: ElementSelectorDict = copy(self._selector_dict) if column: # base_type: ElementSelectorDictKeys = "tablate_column" new_selector_dict["element_type"]: ElementSelectorDictKeys = "tablate_column" new_selector_dict["tablate_column"] = column_selector(index=column_index) if row: # base_type: ElementSelectorDictKeys = "tablate_row" new_selector_dict["element_type"]: ElementSelectorDictKeys = "tablate_row" new_selector_dict["tablate_row"] = row_selector(index=row_index) if text_cell: # base_type: ElementSelectorDictKeys = "tablate_text" new_selector_dict["element_type"]: ElementSelectorDictKeys = "tablate_text" return new_selector_dict