On Sun, Mar 7, 2010 at 9:11 AM, Terry Brown <[email protected]> wrote:
> On Sun, 7 Mar 2010 07:46:53 -0600
> Kent Tenney <[email protected]> wrote:
>
>> r 3038
>>
>> I want  a list of this node and it's siblings ascending, evidently
>> I'm missing something.
>
> Here's my version.  You're issue was calling getNthChild from p when you 
> needed to call it from p's parent.

Doh!

result = get_children_to(p, index)
should be
result = get_children_to(p.parent(), index)

This seems to work, if ugly.

I need to gather siblings above the node with focus.

The method I wanted and couldn't find would be something like a generator
p.siblingAbove()

I settled on descending from the parent to the node with focus.

Suggestions welcome.

Thanks,
Kent

>  But then you run into the weird way there's not root level position, so you 
> need a special case for a top level node.  Maybe the function should be 
> called "get_preceeding_siblings".  Also index doesn't need to be passed in 
> really.
>
> Cheers -Terry
>
> def get_children_to(p, index):
>    """Return a list of children, not going below ``index``
>    """
>    children = []
>    counter = 0
>    parent = p.parent()
>
>    if not parent: # top level node case
>        sib = c.rootPosition()
>        while sib != p:
>            children.append(sib)
>            sib = sib.next()
>        return children
>
>    while True:
>        children.append(parent.getNthChild(counter))
>        counter = counter + 1
>        if counter > index: break
>    return children
>
> p = c.currentPosition()
> index = p.childIndex()
>
> result = get_children_to(p, index)
> n = result[0]
> g.es("%s %s" % (n, p))
> g.es(n.h)
> g.es(result)
>
>
>> I get an error in the snippet below, n.h complains that
>> None type has no headstring.
>>
>> def get_children_to(p, index):
>>     """Return a list of children, not going below ``index``
>>     """
>>     children = []
>>     counter = 0
>>     while True:
>>         children.append(p.getNthChild(counter))
>>         counter = counter + 1
>>         if counter > index: break
>>     return children
>>
>> p = c.currentPosition()
>> index = p.childIndex()
>>
>> result = get_children_to(p, index)
>> n = result[0]
>> g.es("%s %s" % (n, p))
>> g.es(n.h)
>>
>> Thanks,
>> Kent
>>
>
> --
> 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.
>
>

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