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:
Juro Oravec 2024-05-01 20:55:09 +02:00 committed by GitHub
parent 0f3491850b
commit 3fc90e4956
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 1394 additions and 838 deletions

View file

@ -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: