diff options
Diffstat (limited to 'src/ee/kicad/model.py')
-rw-r--r-- | src/ee/kicad/model.py | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/ee/kicad/model.py b/src/ee/kicad/model.py index f6bd8c1..edc900c 100644 --- a/src/ee/kicad/model.py +++ b/src/ee/kicad/model.py @@ -1,8 +1,10 @@ import re -from typing import List +from typing import List, Set from functools import total_ordering +from ee import EeException + class Position(object): def __init__(self, x, y): @@ -61,8 +63,17 @@ class Component(object): self._ref = ref self._fields = fields # type List[ComponentField] + r = re.compile("([^0-9]+)(.+)") + try: + parts = r.split(self._ref) + self._ref_type = parts[1] + self._ref_num = int(parts[2]) + except ValueError: + self._ref_type = None + self._ref_num = None + def __eq__(self, o: object) -> bool: - other = o # type Component + other = o # type: Component return isinstance(o, Component) and self.ref == other.ref def __lt__(self, o: object) -> bool: @@ -94,17 +105,19 @@ class Component(object): @property def has_ref_num(self): - return not self._ref.endswith("?") + return self._ref_num is not None @property def ref_type(self) -> str: - r = re.compile("([^0-9]+)(.+)") - return r.split(self._ref)[1] + if self._ref_type is not None: + return self._ref_type + raise EeException("This component does not have a ref type") @property def ref_num(self) -> int: - r = re.compile("([^0-9]+)(.+)") - return int(r.split(self._ref)[2]) + if self._ref_num is not None: + return self._ref_num + raise EeException("This component does not have a ref num") @property def is_pwr(self) -> bool: @@ -115,11 +128,11 @@ class Component(object): return self.ref_type == "#FLG" @property - def value(self): + def value(self) -> str: return self._fields[1].value @property - def footprint(self): + def footprint(self) -> str: return self._fields[2].value @property @@ -177,7 +190,7 @@ class Schematic(object): self._sheets.append(sheet) @property - def components(self): + def components(self) -> Set[Component]: return frozenset(self._components) def add_component(self, component): |