Happy birthday to you Edward. But putting birthday aside, I can't resist to 
comment on some parts of your post.


On Sunday, August 13, 2023 at 11:31:16 AM UTC+2 Edward K. Ream wrote:

Today is my 74th birthday. This Engineering Notebook post is my birthday 
present to myself.

- We can't use VNode generators because they don't yield VNodes in outline 
order.



I really don't know where did you get this idea from? Have you test it? For 
me they always give me the nodes in the outline order. Maybe we don't use 
the same generator? Here is mine:

def v_generator(v):
    yield v
    for ch in v.children:
        yield from v_generator(ch)

a = ('hidden-root-vnode-gnx',) + tuple(p.gnx for p in c.all_positions())
b = tuple(v.gnx for v in v_generator(c.hiddenRootNode))

assert a == b

# of coarse you can avoid yielding root vnode with
# a slightly different generator

def v_gen2(vs):
    for ch in vs:
        yield ch
        yield from v_gen2(ch.children)

# and it can be used like this

a = tuple(p.gnx for p in c.all_positions())
b = tuple(v.gnx for v in v_gen2(c.hiddenRootNode.children))
assert a == b
g.es('ok')

The parents attribute is never used in this generators so it is completely 
free to be modified by the scripts. The information about outline order is 
fully contained in the v.children attributes. The v.parents attribute is 
necessary only if you want to continue traversal in outline order from any 
given point.

Vitalije

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/3ddc42e6-6c0f-48b2-90d5-e838ff4743c9n%40googlegroups.com.

Reply via email to