示例#1
0
def transplant_nodes(parent: Element, new_parent: Element, start: Node, end: Node) -> Element:
    start_pos = parent.index(start)
    end_pos = parent.index(end)
    for _ in range(start_pos + 1, end_pos):
        # Note: do not use Element.remove() here.
        # It removes wrong node if the target is Text.
        subnode = parent.pop(start_pos + 1)
        new_parent += subnode

    return new_parent
示例#2
0
def insert_field_list(node: Element) -> nodes.field_list:
    field_list = nodes.field_list()
    desc = [n for n in node if isinstance(n, addnodes.desc)]
    if desc:
        # insert just before sub object descriptions (ex. methods, nested classes, etc.)
        index = node.index(desc[0])
        node.insert(index - 1, [field_list])
    else:
        node += field_list

    return field_list