joop.web.html¶
An HTML Component is a joop Component that renders to HTML.
Like many projects, joop achieves this via jinja templating. There is a specific structure for template variables that joop imposes to meet its goals of providing a “place for everything and everything in its place.”
- Classes:
- HTML:
A base class for managing Jinja2 templates and rendering HTML content.
- HTMLComponent:
A component class that extends both Component and HTML to provide functionality for rendering HTML components with subcomponents and data.
Classes
|
A base class for managing Jinja2 templates and rendering HTML content. |
|
A component class that extends both Component and HTML to provide functionality for rendering HTML components with subcomponents and data. |
- class joop.web.html.HTML(j_env: Environment | None = None)[source]¶
Bases:
objectA base class for managing Jinja2 templates and rendering HTML content.
- Its main purpose is to tie behavior to a specific Jinja2 env, especially
in terms of template location.
This class provides methods for initializing and managing a Jinja2 environment and loading templates for rendering HTML.
- _template_location¶
The location of the Jinja2 template file.
- Type:
str
- _jinja_env¶
The Jinja2 environment used for rendering.
- Type:
Optional[jinja2.Environment]
- __init__(j_env
Optional[jinja2.Environment] = None): Initializes the HTML class with a Jinja2 environment.
- class joop.web.html.HTMLComponent(j_env: Environment | None = None, parent: Component | None = None)[source]¶
-
A component class that extends both Component and HTML to provide functionality for rendering HTML components with subcomponents and data.
This class integrates the base Component class with the HTML class to enable dynamic rendering of HTML components using Jinja2 templates.
- _loaded_template¶
The loaded Jinja2 template for the component.
- Type:
jinja2.Template
- __init__(j_env
Optional[jinja2.Environment] = None, parent: Optional[Component] = None): Initializes the HTMLComponent with a Jinja2 environment and an optional parent component.
- render(as_subcomponent
bool = False, **kwargs) -> str: Renders the component as a string, optionally as a subcomponent.
- Nested Classes:
- SubComponents:
A class for managing subcomponents of the HTMLComponent.
- Methods:
- get_all -> dict[str, ‘Component’]:
Retrieves all subcomponents as a dictionary.
- render():
Renders all subcomponents and stores their HTML output.
- get_rendered() -> dict[str, str]:
Returns the rendered HTML output of all subcomponents.
- class Data¶
Bases:
_DataClass for defining the processed data of a component.
- _from_inputs(inputs
Component.Inputs) -> Component.Data: Creates a Data instance from the given Inputs.
- from_inputs(inputs
Component.Inputs) -> Component.Data: Abstract method to create a Data instance from the given Inputs.
- __init__() None¶
- from_inputs¶
A descriptor for defining abstract methods in classes.
This class is particularly useful when working with ABCMeta classes and/or dataclasses. It allows marking methods as abstract, ensuring that they must be overridden in subclasses.
- Example usage:
@classmethod def _my_abstract_class_method(cls, something: Any):
raise NotImplementedError(“Abstract; not implemented”)
_my_abstract_class_method = AbstractMethod(_my_abstract_class_method)
- func¶
The function to be marked as abstract.
- Type:
callable
- _isabstract¶
A flag indicating whether the method is abstract.
- Type:
bool
- class Inputs¶
Bases:
objectAbstract base class for defining the input data structure of a component.
- __init__() None¶
- class SubComponents[source]¶
Bases:
SubComponentsA class for managing subcomponents of the HTMLComponent.
- get_all -> dict[str, 'Component']
Retrieves all subcomponents as a dictionary.
- __init__() None¶
- property get_all: dict[str, Component]¶
Retrieve all subcomponents as a dictionary.
- Returns:
A dictionary where keys are subcomponent names and values are the subcomponent instances.
- Return type:
dict[str, Component]
- get_rendered() dict[str, str][source]¶
Return the rendered HTML output of all subcomponents.
This method ensures that all subcomponents are rendered and returns their HTML output as a dictionary.
- Returns:
A dictionary where keys are subcomponent names and values are their rendered HTML output.
- Return type:
dict[str, str]
- __init__(j_env: Environment | None = None, parent: Component | None = None)[source]¶
Initialize the HTMLComponent with a Jinja2 environment and an optional parent component.
- Parameters:
j_env (Optional[jinja2.Environment]) – The Jinja2 environment to use for rendering.
parent (Optional[Component]) – The parent component, if any.
- render(as_subcomponent: bool = False, **kwargs) str[source]¶
Render the component as a string, optionally as a subcomponent.
This method prepares the component for rendering, loads the template, and renders the HTML output using the provided data and subcomponents.
- Parameters:
as_subcomponent (bool) – Whether to render the component as a subcomponent.
**kwargs – Additional keyword arguments for rendering.
- Returns:
The rendered HTML output.
- Return type:
str
- subs: SubComponents¶