select_last_of_type

returns elements that are the last child of their parents.

Source


def select_last_of_type(self):
    parents = list()
    ret = pyNodeList()
    tag = self[0].name()
    for node in self:
        duplicated = False
        for p in parents:
            if p == node.parent():
                duplicated = True
                break
        if not duplicated: parents.append(node.parent())
        if tag != node.name():
            return ret
    for parent in parents:
        n = parent.child(tag)
        if isinstance(n, pyNodeList) and len(n) != 0: n = n.last()
        if n is not None and isinstance(n, pyNode): ret.append(n)
    if len(ret) == 1: return ret[0]
    else: return ret