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)))
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))
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()
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)))
def testFilterInsideIter(self) -> None: ctx = self._parse_fixture() c2 = uast() for n in ctx.iterate(TreeOrder.PRE_ORDER): c2.filter("//uast:Positions", n)
def testFilterBadQuery(self) -> None: ctx = uast() self.assertRaises(RuntimeError, ctx.filter, "//[@roleModule]", {})