Ejemplo n.º 1
0
def wrap_code_elements(tree):
    """ Find all the <xsdxt:code> nodes and make sure they are wrapped by <xsdxt:sample>
    nodes. """

    # grab all the param nodes
    code_nodes = tree.find("xsdxt:code")

    for node in code_nodes:
        parent = node.parent
        sample_node = None

        if node.parent.name == "xsdxt:sample":
            continue

        # try to find a xsdxt:sample node on the parent
        for sibling in parent.children:
            if sibling.name == "xsdxt:sample":
                sample_node = sibling
                break

        # no xsdxt:sample node, so add one
        if sample_node is None:
            sample_node = BaseNode(parent, "xsdxt:sample", {})
            parent.add_child(sample_node)

        # now move the node under the params node
        node.parent = sample_node
        sample_node.add_child(node)
        parent.remove_child(node)
Ejemplo n.º 2
0
def collapse_resources(tree):
    """ In the input wadl, the resource uris are split out into a nested
    structure with each resource slug having it's own level.  For the output,
    we only care about the methods that can be done on resources. """

    # grab all the resources nodes with method nodes under them.
    resource_nodes = []
    resource_visitor = functools.partial(get_resource_nodes, resource_nodes)
    tree.visit(resource_visitor)

    # setup the path for each node properly
    for node in resource_nodes:
        setup_node_path(node)

    # remove each node from the tree
    for node in reversed(resource_nodes):
        node.parent.remove_child(node)
        node.parent = None

    resources_node = tree.find_first("resources")

    # if there is no <resources> node on the page, add one.
    if resources_node is None:
        resources_node = BaseNode(tree, "resources", {})
        tree.add_child(resources_node)

    resources_node.children = []

    # setup the resources nodes in their proper place
    for node in resource_nodes:
        resources_node.add_child(node)
        node.parent = resources_node

    # remove any param nodes not nested in params
    param_nodes = []
    param_visitor = functools.partial(get_param_nodes, param_nodes)
    tree.visit(param_visitor)

    for node in set(param_nodes):
        node.parent.remove_child(node)
        node.parent = None

    # remove any resource nodes with no method children
    empty_resources = []
    empty_resource_visitor = functools.partial(get_empty_resource_nodes,
                                               empty_resources)
    tree.visit(empty_resource_visitor)

    for node in empty_resources:
        node.parent.remove_child(node)
def collapse_resources(tree):
    """ In the input wadl, the resource uris are split out into a nested
    structure with each resource slug having it's own level.  For the output,
    we only care about the methods that can be done on resources. """

    # grab all the resources nodes with method nodes under them.
    resource_nodes = []
    resource_visitor = functools.partial(get_resource_nodes, resource_nodes)
    tree.visit(resource_visitor)

    # setup the path for each node properly
    for node in resource_nodes:
        setup_node_path(node)

    # remove each node from the tree
    for node in reversed(resource_nodes):
        node.parent.remove_child(node)
        node.parent = None

    resources_node = tree.find_first("resources")

    # if there is no <resources> node on the page, add one.
    if resources_node is None:
        resources_node = BaseNode(tree, "resources", {})
        tree.add_child(resources_node)

    resources_node.children = []

    # setup the resources nodes in their proper place
    for node in resource_nodes:
        resources_node.add_child(node)
        node.parent = resources_node

    # remove any param nodes not nested in params
    param_nodes = []
    param_visitor = functools.partial(get_param_nodes, param_nodes)
    tree.visit(param_visitor)

    for node in set(param_nodes):
        node.parent.remove_child(node)
        node.parent = None

    # remove any resource nodes with no method children
    empty_resources = []
    empty_resource_visitor = functools.partial(get_empty_resource_nodes, empty_resources)
    tree.visit(empty_resource_visitor)

    for node in empty_resources:
        node.parent.remove_child(node)
Ejemplo n.º 4
0
    def start_element(self, name, attrs):
        if name in self.node_mapping:
            node = self.node_mapping[name](self.current, name, attrs)
        else:
            node = BaseNode(self.current, name, attrs)

        self.current.children.append(node)
        self.current = node
Ejemplo n.º 5
0
 def __init__(self):
     self.root = BaseNode(None, "root", {})
     self.current = self.root