Skip to content

Commit

Permalink
feat: Basic type style filter comprs in
Browse files Browse the repository at this point in the history
  • Loading branch information
marsninja committed Feb 24, 2024
1 parent 00fb37d commit 42d7144
Show file tree
Hide file tree
Showing 8 changed files with 11 additions and 32 deletions.
7 changes: 2 additions & 5 deletions examples/reference/connect_expressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,12 @@ def travel(self, here: Jac.RootType | node_a) -> None:
here,
None,
Jac.EdgeDir.OUT,
filter_type=MyEdge,
filter_func=lambda x: [i for i in x if i.val <= 6],
filter_func=lambda x: [i for i in x if isinstance(i, MyEdge) if i.val <= 6],
):
print(i.value)
if Jac.visit_node(
self,
Jac.edge_ref(
here, None, Jac.EdgeDir.OUT, filter_type=None, filter_func=None
),
Jac.edge_ref(here, None, Jac.EdgeDir.OUT, filter_func=None),
):
pass

Expand Down
8 changes: 2 additions & 6 deletions examples/reference/data_spatial_calls.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ def func2(self, here: Jac.RootType) -> None:
i += 1
if Jac.visit_node(
self,
Jac.edge_ref(
here, None, Jac.EdgeDir.OUT, filter_type=None, filter_func=None
),
Jac.edge_ref(here, None, Jac.EdgeDir.OUT, filter_func=None),
):
pass

Expand All @@ -33,9 +31,7 @@ def func_1(self, here: Creator) -> None:
print("visiting ", self)
if Jac.visit_node(
here,
Jac.edge_ref(
self, None, Jac.EdgeDir.OUT, filter_type=None, filter_func=None
),
Jac.edge_ref(self, None, Jac.EdgeDir.OUT, filter_func=None),
):
pass

Expand Down
4 changes: 1 addition & 3 deletions examples/reference/data_spatial_references.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ def create(self, here: Jac.RootType) -> None:
)
if Jac.visit_node(
self,
Jac.edge_ref(
here, None, Jac.EdgeDir.OUT, filter_type=None, filter_func=None
),
Jac.edge_ref(here, None, Jac.EdgeDir.OUT, filter_func=None),
):
pass

Expand Down
8 changes: 2 additions & 6 deletions examples/reference/data_spatial_typed_context_blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ def produce(self, here: Jac.RootType) -> None:
i += 1
if Jac.visit_node(
self,
Jac.edge_ref(
here, None, Jac.EdgeDir.OUT, filter_type=None, filter_func=None
),
Jac.edge_ref(here, None, Jac.EdgeDir.OUT, filter_func=None),
):
pass

Expand All @@ -33,9 +31,7 @@ def make(self, here: Producer) -> None:
print(f"Hi, I am {self} returning a String")
if Jac.visit_node(
here,
Jac.edge_ref(
self, None, Jac.EdgeDir.OUT, filter_type=None, filter_func=None
),
Jac.edge_ref(self, None, Jac.EdgeDir.OUT, filter_func=None),
):
pass

Expand Down
2 changes: 2 additions & 0 deletions jaclang/compiler/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -3294,6 +3294,8 @@ def filter_compr(self, kid: list[ast.AstNode]) -> ast.FilterCompr:
if isinstance(kid[2], ast.SubNodeList):
return self.nu(ast.FilterCompr(compares=kid[2], f_type=None, kid=kid))
elif isinstance(kid[3], ast.FilterCompr):
kid[3].add_kids_left(kid[:3])
kid[3].add_kids_right(kid[4:])
return self.nu(kid[3])
else:
raise self.ice()
Expand Down
11 changes: 2 additions & 9 deletions jaclang/plugin/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,6 @@ def disconnect(
left: NodeArchitype | list[NodeArchitype],
right: NodeArchitype | list[NodeArchitype],
dir: EdgeDir,
filter_type: Optional[type],
filter_func: Optional[Callable[[list[EdgeArchitype]], list[EdgeArchitype]]],
) -> bool: # noqa: ANN401
"""Jac's disconnect operator feature."""
Expand All @@ -326,17 +325,11 @@ def disconnect(
for i in left:
for j in right:
edge_list: list[EdgeArchitype] = [*i._jac_.edges]
if filter_type:
edge_list = [e for e in edge_list if isinstance(e, filter_type)]
edge_list = filter_func(edge_list) if filter_func else edge_list
for e in edge_list:
if (
e._jac_.target
and e._jac_.source
and (not filter_type or isinstance(e, filter_type))
):
if e._jac_.target and e._jac_.source:
if (
dir in ["OUT", "ANY"]
dir in ["OUT", "ANY"] # TODO: Not ideal
and i._jac_.obj == e._jac_.source
and e._jac_.target == j._jac_.obj
):
Expand Down
2 changes: 0 additions & 2 deletions jaclang/plugin/feature.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,15 +175,13 @@ def disconnect(
left: NodeArchitype | list[NodeArchitype],
right: NodeArchitype | list[NodeArchitype],
dir: EdgeDir,
filter_type: Optional[type],
filter_func: Optional[Callable[[list[EdgeArchitype]], list[EdgeArchitype]]],
) -> bool:
"""Jac's disconnect operator feature."""
return pm.hook.disconnect(
left=left,
right=right,
dir=dir,
filter_type=filter_type,
filter_func=filter_func,
)

Expand Down
1 change: 0 additions & 1 deletion jaclang/plugin/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,6 @@ def disconnect(
left: NodeArchitype | list[NodeArchitype],
right: NodeArchitype | list[NodeArchitype],
dir: EdgeDir,
filter_type: Optional[type],
filter_func: Optional[Callable[[list[EdgeArchitype]], list[EdgeArchitype]]],
) -> bool: # noqa: ANN401
"""Jac's disconnect operator feature."""
Expand Down

0 comments on commit 42d7144

Please sign in to comment.