diff options
author | toofar <toofar@spalge.com> | 2024-01-06 21:52:53 +1300 |
---|---|---|
committer | toofar <toofar@spalge.com> | 2024-01-06 21:58:43 +1300 |
commit | 1f84108a48a73e27633a7b3c98955cee3237e647 (patch) | |
tree | c01096d5df28c68d024fc0d7ed5520b68aaa455f | |
parent | 03a49419e86fb83077e0c1f75a568bb65d5c9aaf (diff) | |
download | qutebrowser-1f84108a48a73e27633a7b3c98955cee3237e647.tar.gz qutebrowser-1f84108a48a73e27633a7b3c98955cee3237e647.zip |
Clarify TraverseOrder Enum values
I was looking through some commit messages from last week and noticed I
was having trouble keeping track of what these traverse orders meant. So
I tried to adjust the descriptions to be more clear. Hopefully it
worked?
Probably could still use a visual aid though, or the enum value names
could even be changed to be more clear, like "parent-first",
"child-first", "child-first-reverse/-right".
The test I used to verify this description was:
simple_tree = Node('parent')
left = Node('left', simple_tree)
Node('grandleft-left', left)
Node('grandleft-right', left)
Node('middle', simple_tree)
right = Node('right', simple_tree)
Node('grandright', right)
# parent
# ├─ left
# │ ├─ grandleft-left
# │ └─ grandleft-right
# ├─ middle
# └─ right
# └─ grandright
@pytest.mark.parametrize('order, expected', [
(TraverseOrder.PRE, "parent left grandleft-left grandleft-right middle right grandright",),
(TraverseOrder.POST, "grandleft-left grandleft-right left middle grandright right parent",),
(TraverseOrder.POST_R, "grandright right middle grandleft-right grandleft-left left parent",),
])
def test_simple(order, expected):
assert expected == " ".join(
[n.value for n in simple_tree.traverse(order)]
)
-rw-r--r-- | qutebrowser/misc/notree.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/qutebrowser/misc/notree.py b/qutebrowser/misc/notree.py index 78286a6fa..297673bfb 100644 --- a/qutebrowser/misc/notree.py +++ b/qutebrowser/misc/notree.py @@ -46,13 +46,15 @@ class TreeError(RuntimeError): class TraverseOrder(enum.Enum): - """To be used as argument to traverse(). + """Tree traversal order for Node.traverse(). + + All traversals are depth first. + See https://en.wikipedia.org/wiki/Depth-first_search#Vertex_orderings - Implemented orders are pre-order and post-order. Attributes: - PRE: pre-order (parents before children). Same as in Node.render - POST: children of a node are always yield before their parent. - POST_R: Like POST, but children are yield in reverse order + PRE: pre-order: parent then children, leftmost nodes first. Same as in Node.render(). + POST: post-order: children then parent, leftmost nodes first, then parent. + POST_R: post-order-reverse: like POST but rightmost nodes first. """ PRE = 'pre-order' |