On Wed, 7 Jan 2009 09:56:12 -0800 (PST)
"Edward K. Ream" <[email protected]> wrote:
>
> Some free time opened up, so I wrote c.vnode2position. It's on the
> trunk at rev 1386. Here it is::
>
> def vnode2position (self,v):
>
> '''Given a vnode v, construct a valid position p such that p.v =
> v.
> '''
>
> c = self
> stack = []
> while v.parents:
> parent = v.parents[0]
> n = parent.t.children.index(v)
> stack.insert(0,(v,n),)
> v = parent
>
> v,n = stack.pop()
> p = leoNodes.position(v,n,stack)
> assert c.positionExists(p)
> return p
Great, many thanks.
Is it ok to change it by adding
if not stack:
return None
just before v,n = stack.pop()? I.e. so that it returns None if there
is no position for the vnode? Or do you prefer catching exceptions for
that kind of thing?
Cheers -Terry
> Notes:
>
> - The 'while' loop will always execute at least once because of the
> hidden root vnode, so the call to stack.pop is safe.
>
> - I was probably thinking of p.archivedPosition when I said that this
> code might already exist. In fact, the two methods are quite
> different.
>
> Let me know if this works for you. I think it is an important
> addition to Leo. It's possible that it might need to be modified for
> chapters.
>
> Oh! Now I remember. findPositionInChapter does something similar.
> Depending on your purposes, you might have to verify that the position
> exists in a desired chapter...
>
> Edward
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/leo-editor?hl=en
-~----------~----~----~----~------~----~------~--~---