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
-~----------~----~----~----~------~----~------~--~---

Reply via email to