Source code for pygerber.tokens.load

# -*- coding: utf-8 -*-
from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from pygerber.drawing_state import DrawingState

import re

from pygerber.validators.basic import Float, String

from .token import Token


[docs]class LoadPolarityToken(Token): regex = re.compile(r"%LP(?P<POLARITY>[CD])\*%") POLARITY = String()
[docs] def alter_state(self, state: DrawingState): state.set_polarity(self.POLARITY)
[docs]class LoadMirroringToken(Token): regex = re.compile(r"%LM(?P<MIRRORING>((N)|(X)|(Y)|(XY)))\*%") MIRRORING = String()
[docs] def alter_state(self, state: DrawingState): state.set_mirroring(self.MIRRORING)
[docs]class LoadRotationToken(Token): FLOAT_PATTERN = r"[-+]?[0-9]*\.?[0-9]*" regex = re.compile(r"%LR(?P<ROTATION>{0})\*%".format(FLOAT_PATTERN)) ROTATION = Float()
[docs] def alter_state(self, state: DrawingState): state.set_rotation(self.ROTATION)
[docs]class LoadScalingToken(Token): FLOAT_PATTERN = r"[-+]?[0-9]*\.?[0-9]*" regex = re.compile(r"%LS(?P<SCALE>{0})\*%".format(FLOAT_PATTERN)) SCALE = Float()
[docs] def alter_state(self, state: DrawingState): state.set_scaling(self.SCALE)
[docs]class LoadUnitToken(Token): regex = re.compile(r"%MO(?P<UNIT>(MM)|(IN))\*%") UNIT = String()
[docs] def alter_state(self, state: DrawingState): state.set_unit(self.UNIT)