diff --git a/lib/scorePhrase.ts b/lib/scorePhrase.ts index 8c90244..d506aae 100644 --- a/lib/scorePhrase.ts +++ b/lib/scorePhrase.ts @@ -35,7 +35,20 @@ const wordQualityScoreEntries = Object.entries(wordQualityScore).sort( (a, b) => b[1] - a[1], ) +const digitBearingIndustrialBusWords = [ + "ETHERCAT", + "PROFINET", + "IOLINK", + "IO_LINK", + "FIELD_BUS", +] + export const scorePhrase = (phrase: string) => { + for (const word of digitBearingIndustrialBusWords) { + if (phrase.includes(word)) { + return 1.15 + } + } if (phrase.match(/\d+/)) { return 0.5 } diff --git a/tests/industrial-bus-labels.test.tsx b/tests/industrial-bus-labels.test.tsx new file mode 100644 index 0000000..17e7d36 --- /dev/null +++ b/tests/industrial-bus-labels.test.tsx @@ -0,0 +1,57 @@ +import { expect, it } from "bun:test" +import { convertCircuitJsonToReadableNetlist } from "lib/convertCircuitJsonToReadableNetlist" +import { renderCircuit } from "tests/fixtures/render-circuit" + +declare module "bun:test" { + interface Matchers { + toMatchInlineSnapshot(snapshot?: string | null): Promise + } +} + +it("preserves digit-bearing industrial bus labels in generated net names", () => { + const circuitJson = renderCircuit( + + + + + + , + ) + + expect( + convertCircuitJsonToReadableNetlist(circuitJson), + ).toMatchInlineSnapshot(` + "COMPONENTS: + - U1: LAN9252, soic8 + - R1: 10kΩ 0402 resistor + + NET: U1_ETHERCAT_SYNC1 + - U1 ETHERCAT_SYNC1 + - R1 pin1 + + + COMPONENT_PINS: + U1 (LAN9252) + - pin1(ETHERCAT_SYNC1): NETS(U1_ETHERCAT_SYNC1) + - pin2(PROFINET_RX1): NOT_CONNECTED + - pin3: NOT_CONNECTED + - pin4: NOT_CONNECTED + - pin5: NOT_CONNECTED + - pin6: NOT_CONNECTED + - pin7: NOT_CONNECTED + - pin8: NOT_CONNECTED + + R1 (10kΩ 0402) + - pin1(anode, pos, left): NETS(U1_ETHERCAT_SYNC1) + - pin2(cathode, neg, right): NOT_CONNECTED + " + `) +})