summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2024-01-06 21:52:53 +1300
committertoofar <toofar@spalge.com>2024-01-06 21:58:43 +1300
commit1f84108a48a73e27633a7b3c98955cee3237e647 (patch)
treec01096d5df28c68d024fc0d7ed5520b68aaa455f
parent03a49419e86fb83077e0c1f75a568bb65d5c9aaf (diff)
downloadqutebrowser-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.py12
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'