Skip to content

Commit

Permalink
Add AB class for wrapping whole AB blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
Argmaster committed Aug 19, 2024
1 parent 7ce8da4 commit 99b3c2a
Show file tree
Hide file tree
Showing 6 changed files with 334 additions and 195 deletions.
28 changes: 28 additions & 0 deletions src/pygerber/gerberx3/ast/nodes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,30 @@

from __future__ import annotations

from pygerber.gerberx3.ast.nodes.aperture.AB import AB
from pygerber.gerberx3.ast.nodes.aperture.AB_close import ABclose
from pygerber.gerberx3.ast.nodes.aperture.AB_open import ABopen
from pygerber.gerberx3.ast.nodes.aperture.AD import AD
from pygerber.gerberx3.ast.nodes.aperture.ADC import ADC
from pygerber.gerberx3.ast.nodes.aperture.ADmacro import ADmacro
from pygerber.gerberx3.ast.nodes.aperture.ADO import ADO
from pygerber.gerberx3.ast.nodes.aperture.ADP import ADP
from pygerber.gerberx3.ast.nodes.aperture.ADR import ADR
from pygerber.gerberx3.ast.nodes.aperture.AM import AM
from pygerber.gerberx3.ast.nodes.aperture.AM_close import AMclose
from pygerber.gerberx3.ast.nodes.aperture.AM_open import AMopen
from pygerber.gerberx3.ast.nodes.aperture.SR_close import SRclose
from pygerber.gerberx3.ast.nodes.aperture.SR_open import SRopen
from pygerber.gerberx3.ast.nodes.attribute.TA import (
TA,
TA_AperFunction,
TA_DrillTolerance,
TA_FlashText,
TA_UserName,
)
from pygerber.gerberx3.ast.nodes.attribute.TD import TD
from pygerber.gerberx3.ast.nodes.attribute.TF import (
TF,
TF_MD5,
TF_CreationDate,
TF_FileFunction,
Expand All @@ -34,6 +39,7 @@
TF_UserName,
)
from pygerber.gerberx3.ast.nodes.attribute.TO import (
TO,
TO_C,
TO_CMNP,
TO_N,
Expand All @@ -51,6 +57,7 @@
TO_CVal,
TO_UserName,
)
from pygerber.gerberx3.ast.nodes.base import Node
from pygerber.gerberx3.ast.nodes.d_codes.D01 import D01
from pygerber.gerberx3.ast.nodes.d_codes.D02 import D02
from pygerber.gerberx3.ast.nodes.d_codes.D03 import D03
Expand Down Expand Up @@ -81,6 +88,7 @@
from pygerber.gerberx3.ast.nodes.m_codes.M02 import M02
from pygerber.gerberx3.ast.nodes.math.assignment import Assignment
from pygerber.gerberx3.ast.nodes.math.constant import Constant
from pygerber.gerberx3.ast.nodes.math.expression import Expression
from pygerber.gerberx3.ast.nodes.math.operators.binary.add import Add
from pygerber.gerberx3.ast.nodes.math.operators.binary.div import Div
from pygerber.gerberx3.ast.nodes.math.operators.binary.mul import Mul
Expand All @@ -90,6 +98,7 @@
from pygerber.gerberx3.ast.nodes.math.point import Point
from pygerber.gerberx3.ast.nodes.math.variable import Variable
from pygerber.gerberx3.ast.nodes.other.coordinate import (
Coordinate,
CoordinateI,
CoordinateJ,
CoordinateX,
Expand All @@ -114,12 +123,19 @@
from pygerber.gerberx3.ast.nodes.properties.MO import MO
from pygerber.gerberx3.ast.nodes.properties.OF import OF
from pygerber.gerberx3.ast.nodes.properties.SF import SF
from pygerber.gerberx3.ast.nodes.types import (
ApertureIdStr,
Double,
Integer,
PackedCoordinateStr,
)

__all__ = [
"ABclose",
"ABopen",
"ADC",
"ADmacro",
"AD",
"ADO",
"ADP",
"ADR",
Expand Down Expand Up @@ -218,4 +234,16 @@
"MO",
"OF",
"SF",
"Double",
"Integer",
"ApertureIdStr",
"PackedCoordinateStr",
"Node",
"TA",
"TO",
"TF",
"Coordinate",
"Expression",
"AB",
"AM",
]
32 changes: 32 additions & 0 deletions src/pygerber/gerberx3/ast/nodes/aperture/AB.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""`pygerber.nodes.aperture.AB` module contains definition of `AB` class."""

from __future__ import annotations

from typing import TYPE_CHECKING, Callable

from pygerber.gerberx3.ast.nodes.aperture.AB_close import ABclose
from pygerber.gerberx3.ast.nodes.aperture.AB_open import ABopen
from pygerber.gerberx3.ast.nodes.base import Node

if TYPE_CHECKING:
from typing_extensions import Self

from pygerber.gerberx3.ast.visitor import AstVisitor


class AB(Node):
"""Represents AB Gerber extended command."""

open: ABopen
nodes: list[Node]
close: ABclose

def visit(self, visitor: AstVisitor) -> None:
"""Handle visitor call."""
visitor.on_ab(self)

def get_visitor_callback_function(
self, visitor: AstVisitor
) -> Callable[[Self], None]:
"""Get callback function for the node."""
return visitor.on_ab
28 changes: 28 additions & 0 deletions src/pygerber/gerberx3/ast/nodes/aperture/AM.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""`pygerber.nodes.aperture.AM` module contains definition of `AM` class."""

from __future__ import annotations

from typing import TYPE_CHECKING, Callable

from pygerber.gerberx3.ast.nodes.base import Node

if TYPE_CHECKING:
from typing_extensions import Self

from pygerber.gerberx3.ast.visitor import AstVisitor


class AM(Node):
"""Represents AM Gerber extended command."""

nodes: list[Node]

def visit(self, visitor: AstVisitor) -> None:
"""Handle visitor call."""
visitor.on_am(self)

def get_visitor_callback_function(
self, visitor: AstVisitor
) -> Callable[[Self], None]:
"""Get callback function for the node."""
return visitor.on_am
Loading

0 comments on commit 99b3c2a

Please sign in to comment.