Add options.terminology to override certain terms
These terms can optionally be replaced by user defined terms: pin, wire, shield Resolves #331 basic feature
This commit is contained in:
parent
7cf9244af1
commit
c53455533e
@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from dataclasses import InitVar, dataclass, field
|
from dataclasses import InitVar, asdict, dataclass, field, replace
|
||||||
from enum import Enum, auto
|
from enum import Enum, auto
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict, List, Optional, Tuple, Union
|
from typing import Dict, List, Optional, Tuple, Union
|
||||||
@ -47,6 +47,19 @@ class Metadata(dict):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Terminology:
|
||||||
|
"""Terms that the user might want to override"""
|
||||||
|
|
||||||
|
pin: Optional[PlainText] = None
|
||||||
|
wire: Optional[PlainText] = None
|
||||||
|
shield: Optional[PlainText] = None
|
||||||
|
|
||||||
|
def fully_populated(self):
|
||||||
|
"""Return a copy where empty field values are replaced with their names"""
|
||||||
|
return replace(self, **{k: v or k for k, v in asdict(self).items()})
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Options:
|
class Options:
|
||||||
fontname: PlainText = "arial"
|
fontname: PlainText = "arial"
|
||||||
@ -58,6 +71,7 @@ class Options:
|
|||||||
color_mode: ColorMode = "SHORT"
|
color_mode: ColorMode = "SHORT"
|
||||||
mini_bom_mode: bool = True
|
mini_bom_mode: bool = True
|
||||||
template_separator: str = "."
|
template_separator: str = "."
|
||||||
|
terminology: Optional[Terminology] = None
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
if not self.bgcolor_node:
|
if not self.bgcolor_node:
|
||||||
@ -68,6 +82,7 @@ class Options:
|
|||||||
self.bgcolor_cable = self.bgcolor_node
|
self.bgcolor_cable = self.bgcolor_node
|
||||||
if not self.bgcolor_bundle:
|
if not self.bgcolor_bundle:
|
||||||
self.bgcolor_bundle = self.bgcolor_cable
|
self.bgcolor_bundle = self.bgcolor_cable
|
||||||
|
self.terminology = Terminology(**(self.terminology or {}))
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@ -77,6 +77,7 @@ class Harness:
|
|||||||
self.mates = []
|
self.mates = []
|
||||||
self._bom = [] # Internal Cache for generated bom
|
self._bom = [] # Internal Cache for generated bom
|
||||||
self.additional_bom_items = []
|
self.additional_bom_items = []
|
||||||
|
self.terminology = self.options.terminology.fully_populated()
|
||||||
|
|
||||||
def add_connector(self, name: str, *args, **kwargs) -> None:
|
def add_connector(self, name: str, *args, **kwargs) -> None:
|
||||||
check_old(f"Connector '{name}'", OLD_CONNECTOR_ATTR, kwargs)
|
check_old(f"Connector '{name}'", OLD_CONNECTOR_ATTR, kwargs)
|
||||||
@ -200,7 +201,7 @@ class Harness:
|
|||||||
html_line_breaks(pn_info_string(HEADER_SPN, connector.supplier, connector.spn))],
|
html_line_breaks(pn_info_string(HEADER_SPN, connector.supplier, connector.spn))],
|
||||||
[html_line_breaks(connector.type),
|
[html_line_breaks(connector.type),
|
||||||
html_line_breaks(connector.subtype),
|
html_line_breaks(connector.subtype),
|
||||||
f'{connector.pincount}-pin' if connector.show_pincount else None,
|
f'{connector.pincount}-{self.terminology.pin}' if connector.show_pincount else None,
|
||||||
translate_color(connector.color, self.options.color_mode) if connector.color else None,
|
translate_color(connector.color, self.options.color_mode) if connector.color else None,
|
||||||
html_colorbar(connector.color)],
|
html_colorbar(connector.color)],
|
||||||
'<!-- connector table -->' if connector.style != 'simple' else None,
|
'<!-- connector table -->' if connector.style != 'simple' else None,
|
||||||
@ -419,7 +420,7 @@ class Harness:
|
|||||||
wirehtml.append(" <tr><td> </td></tr>") # spacer
|
wirehtml.append(" <tr><td> </td></tr>") # spacer
|
||||||
wirehtml.append(" <tr>")
|
wirehtml.append(" <tr>")
|
||||||
wirehtml.append(" <td><!-- s_in --></td>")
|
wirehtml.append(" <td><!-- s_in --></td>")
|
||||||
wirehtml.append(" <td>Shield</td>")
|
wirehtml.append(f" <td>{self.terminology.shield.title()}</td>")
|
||||||
wirehtml.append(" <td><!-- s_out --></td>")
|
wirehtml.append(" <td><!-- s_out --></td>")
|
||||||
wirehtml.append(" </tr>")
|
wirehtml.append(" </tr>")
|
||||||
if isinstance(cable.shield, str):
|
if isinstance(cable.shield, str):
|
||||||
|
|||||||
@ -107,7 +107,11 @@ def generate_bom(harness: "Harness") -> List[BOMEntry]:
|
|||||||
"Connector"
|
"Connector"
|
||||||
+ (f", {connector.type}" if connector.type else "")
|
+ (f", {connector.type}" if connector.type else "")
|
||||||
+ (f", {connector.subtype}" if connector.subtype else "")
|
+ (f", {connector.subtype}" if connector.subtype else "")
|
||||||
+ (f", {connector.pincount} pins" if connector.show_pincount else "")
|
+ (
|
||||||
|
f", {connector.pincount} {harness.terminology.pin}s"
|
||||||
|
if connector.show_pincount
|
||||||
|
else ""
|
||||||
|
)
|
||||||
+ (
|
+ (
|
||||||
f", {translate_color(connector.color, harness.options.color_mode)}"
|
f", {translate_color(connector.color, harness.options.color_mode)}"
|
||||||
if connector.color
|
if connector.color
|
||||||
@ -140,7 +144,7 @@ def generate_bom(harness: "Harness") -> List[BOMEntry]:
|
|||||||
if cable.gauge
|
if cable.gauge
|
||||||
else " wires"
|
else " wires"
|
||||||
)
|
)
|
||||||
+ (" shielded" if cable.shield else "")
|
+ (f" {harness.terminology.shield}ed" if cable.shield else "")
|
||||||
+ (
|
+ (
|
||||||
f", {translate_color(cable.color, harness.options.color_mode)}"
|
f", {translate_color(cable.color, harness.options.color_mode)}"
|
||||||
if cable.color
|
if cable.color
|
||||||
@ -160,7 +164,7 @@ def generate_bom(harness: "Harness") -> List[BOMEntry]:
|
|||||||
# add each wire from the bundle to the bom
|
# add each wire from the bundle to the bom
|
||||||
for index, color in enumerate(cable.colors):
|
for index, color in enumerate(cable.colors):
|
||||||
description = (
|
description = (
|
||||||
"Wire"
|
harness.terminology.wire.title()
|
||||||
+ (f", {cable.type}" if cable.type else "")
|
+ (f", {cable.type}" if cable.type else "")
|
||||||
+ (f", {cable.gauge} {cable.gauge_unit}" if cable.gauge else "")
|
+ (f", {cable.gauge} {cable.gauge_unit}" if cable.gauge else "")
|
||||||
+ (
|
+ (
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user