mirror of
https://github.com/django-components/django-components.git
synced 2025-09-26 23:49:07 +00:00
feat: merge context settings, replace if_filled tag with var
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
0f3491850b
commit
3fc90e4956
17 changed files with 1394 additions and 838 deletions
|
@ -1,4 +1,4 @@
|
|||
from typing import Callable
|
||||
from typing import Callable, List, NamedTuple, Optional
|
||||
|
||||
from django.template.base import Node, NodeList, TextNode
|
||||
from django.template.defaulttags import CommentNode
|
||||
|
@ -15,13 +15,20 @@ def nodelist_has_content(nodelist: NodeList) -> bool:
|
|||
return False
|
||||
|
||||
|
||||
def walk_nodelist(nodes: NodeList, callback: Callable[[Node], None]) -> None:
|
||||
class NodeTraverse(NamedTuple):
|
||||
node: Node
|
||||
parent: Optional["NodeTraverse"]
|
||||
|
||||
|
||||
def walk_nodelist(nodes: NodeList, callback: Callable[[Node], Optional[str]]) -> None:
|
||||
"""Recursively walk a NodeList, calling `callback` for each Node."""
|
||||
node_queue = [*nodes]
|
||||
node_queue: List[NodeTraverse] = [NodeTraverse(node=node, parent=None) for node in nodes]
|
||||
while len(node_queue):
|
||||
node: Node = node_queue.pop()
|
||||
callback(node)
|
||||
node_queue.extend(get_node_children(node))
|
||||
traverse = node_queue.pop()
|
||||
callback(traverse)
|
||||
child_nodes = get_node_children(traverse.node)
|
||||
child_traverses = [NodeTraverse(node=child_node, parent=traverse) for child_node in child_nodes]
|
||||
node_queue.extend(child_traverses)
|
||||
|
||||
|
||||
def get_node_children(node: Node) -> NodeList:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue