Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
pokey committed Aug 14, 2023
1 parent 19a5710 commit 93ae644
Showing 1 changed file with 31 additions and 49 deletions.
80 changes: 31 additions & 49 deletions src/public_api/extract_decorated_marks.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,52 +14,34 @@


def extract_decorated_marks(capture: Any) -> list[dict]:
if isinstance(capture, ListTarget):
return [
mark
for target in capture.elements
for mark in extract_decorated_marks(target)
]

if isinstance(capture, RangeTarget):
return extract_decorated_marks(capture.anchor) + extract_decorated_marks(
capture.active
)

if isinstance(capture, PrimitiveTarget):
return extract_decorated_marks_from_primitive_target(capture)

if isinstance(capture, ImplicitTarget):
return []

if isinstance(capture, ListDestination):
return [
mark
for destination in capture.destinations
for mark in extract_decorated_marks(destination)
]

if isinstance(capture, PrimitiveDestination):
return extract_decorated_marks(capture.target)

if isinstance(capture, ImplicitDestination):
return []

if isinstance(capture, BringMoveTargets):
return extract_decorated_marks(capture.source) + extract_decorated_marks(
capture.destination
)

if isinstance(capture, SwapTargets):
return extract_decorated_marks(capture.target1) + extract_decorated_marks(
capture.target2
)

raise TypeError(f"Unknown capture type: {type(capture)}")


def extract_decorated_marks_from_primitive_target(target: PrimitiveTarget):
if target.mark is None or target.mark["type"] != "decoratedSymbol":
return []

return [target.mark]
match capture:
case PrimitiveTarget(mark=mark):
if mark is None or mark["type"] != "decoratedSymbol":
return []
return [mark]
case ImplicitTarget():
return []
case RangeTarget(anchor=anchor, active=active):
return extract_decorated_marks(anchor) + extract_decorated_marks(active)
case ListTarget(elements=elements):
return [
mark
for target in elements
for mark in extract_decorated_marks(target)
]
case PrimitiveDestination(target=target):
return extract_decorated_marks(target)
case ImplicitDestination():
return []
case ListDestination(destinations=destinations):
return [
mark
for destination in destinations
for mark in extract_decorated_marks(destination)
]
case BringMoveTargets(source=source, destination=destination):
return extract_decorated_marks(source) + extract_decorated_marks(destination)
case SwapTargets(target1=target1, target2=target2):
return extract_decorated_marks(target1) + extract_decorated_marks(target2)
case _:
raise TypeError(f"Unknown capture type: {type(capture)}")

0 comments on commit 93ae644

Please sign in to comment.