Example #1
0
 def testFilterProperties(self) -> None:
     ctx = uast()
     obj = {"k1": "v1", "k2": "v2"}
     self.assertTrue(any(ctx.filter("/*[@k1='v1']", obj)))
     self.assertTrue(any(ctx.filter("/*[@k2='v2']", obj)))
     self.assertFalse(any(ctx.filter("/*[@k2='v1']", obj)))
     self.assertFalse(any(ctx.filter("/*[@k1='v2']", obj)))
Example #2
0
def filter(n: Node, query: str) -> CompatNodeIterator:
    """
    This function has the same signature as the pre-v3 filter() returning a
    compatibility CompatNodeIterator.
    """
    ctx = uast()
    return CompatNodeIterator(
        NodeIterator(ctx.filter(query, n.internal_node), ctx))
Example #3
0
 def __init__(self, grpc_response: ParseResponse = None) -> None:
     if grpc_response:
         if grpc_response.errors:
             raise ResponseError("\n".join(
                 [error.text for error in grpc_response.errors])
             )
         self._response = grpc_response
         self.ctx = decode(grpc_response.uast, format=0)
     else:
         self._response = None
         self.ctx = uast()
Example #4
0
def iterator(n: Union[Node, CompatNodeIterator, dict],
             order: TreeOrder = TreeOrder.PRE_ORDER) -> CompatNodeIterator:
    """
    This function has the same signature as the pre-v3 iterator()
    call returning a compatibility CompatNodeIterator.
    """

    if isinstance(n, CompatNodeIterator):
        return CompatNodeIterator(n._nodeit.iterate(order), only_nodes=True)
    elif isinstance(n, Node):
        nat_it = native_iterator(n.internal_node, order)
        return CompatNodeIterator(NodeIterator(nat_it), only_nodes=True)
    elif isinstance(n, dict):
        nat_it = native_iterator(n, order)
        return CompatNodeIterator(NodeIterator(nat_it, uast()),
                                  only_nodes=True)
    else:
        raise WrongTypeException("iterator on non node or iterator type (%s)" %
                                 str(type(n)))
Example #5
0
 def testFilterInsideIter(self) -> None:
     ctx = self._parse_fixture()
     c2 = uast()
     for n in ctx.iterate(TreeOrder.PRE_ORDER):
         c2.filter("//uast:Positions", n)
Example #6
0
 def testFilterBadQuery(self) -> None:
     ctx = uast()
     self.assertRaises(RuntimeError, ctx.filter, "//[@roleModule]", {})