mirror of
https://github.com/django-components/django-components.git
synced 2025-08-09 00:37:59 +00:00
feat: TagFormatter - Allow users to customize component template tags (#572)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
b89c09aa5f
commit
71d8679e8d
23 changed files with 1593 additions and 474 deletions
|
@ -477,7 +477,7 @@ class ComponentNode(Node):
|
|||
|
||||
def __init__(
|
||||
self,
|
||||
name_fexp: FilterExpression,
|
||||
name: str,
|
||||
context_args: List[FilterExpression],
|
||||
context_kwargs: Mapping[str, FilterExpression],
|
||||
isolated_context: bool = False,
|
||||
|
@ -485,7 +485,7 @@ class ComponentNode(Node):
|
|||
component_id: Optional[str] = None,
|
||||
) -> None:
|
||||
self.component_id = component_id or gen_id()
|
||||
self.name_fexp = name_fexp
|
||||
self.name = name
|
||||
self.context_args = context_args or []
|
||||
self.context_kwargs = context_kwargs or {}
|
||||
self.isolated_context = isolated_context
|
||||
|
@ -494,15 +494,14 @@ class ComponentNode(Node):
|
|||
|
||||
def __repr__(self) -> str:
|
||||
return "<ComponentNode: {}. Contents: {!r}>".format(
|
||||
self.name_fexp,
|
||||
self.name,
|
||||
getattr(self, "nodelist", None), # 'nodelist' attribute only assigned later.
|
||||
)
|
||||
|
||||
def render(self, context: Context) -> str:
|
||||
trace_msg("RENDR", "COMP", self.name_fexp, self.component_id)
|
||||
trace_msg("RENDR", "COMP", self.name, self.component_id)
|
||||
|
||||
resolved_component_name = self.name_fexp.resolve(context)
|
||||
component_cls: Type[Component] = registry.get(resolved_component_name)
|
||||
component_cls: Type[Component] = registry.get(self.name)
|
||||
|
||||
# Resolve FilterExpressions and Variables that were passed as args to the
|
||||
# component, then call component's context method
|
||||
|
@ -532,8 +531,8 @@ class ComponentNode(Node):
|
|||
f"Detected duplicate fill tag name '{resolved_name}'."
|
||||
)
|
||||
|
||||
resolved_slot_default_var = fill_node.resolve_slot_default(context, resolved_component_name)
|
||||
resolved_slot_data_var = fill_node.resolve_slot_data(context, resolved_component_name)
|
||||
resolved_slot_default_var = fill_node.resolve_slot_default(context, self.name)
|
||||
resolved_slot_data_var = fill_node.resolve_slot_data(context, self.name)
|
||||
fill_content[resolved_name] = FillContent(
|
||||
content_func=_nodelist_to_slot_render_func(fill_node.nodelist),
|
||||
slot_default_var=resolved_slot_default_var,
|
||||
|
@ -541,7 +540,7 @@ class ComponentNode(Node):
|
|||
)
|
||||
|
||||
component: Component = component_cls(
|
||||
registered_name=resolved_component_name,
|
||||
registered_name=self.name,
|
||||
outer_context=context,
|
||||
fill_content=fill_content,
|
||||
component_id=self.component_id,
|
||||
|
@ -557,7 +556,7 @@ class ComponentNode(Node):
|
|||
kwargs=resolved_context_kwargs,
|
||||
)
|
||||
|
||||
trace_msg("RENDR", "COMP", self.name_fexp, self.component_id, "...Done!")
|
||||
trace_msg("RENDR", "COMP", self.name, self.component_id, "...Done!")
|
||||
return output
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue