circuitscript 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/graph.js CHANGED
@@ -51,6 +51,7 @@ class NetGraph {
51
51
  const baseFrame = new layout_js_1.RenderFrame(new Frame_js_1.Frame(Frame_js_1.FixedFrameIds.BaseFrame));
52
52
  const frameStack = [baseFrame];
53
53
  const containerFrames = [baseFrame];
54
+ const nodeFrames = new Map();
54
55
  sequence.forEach((sequenceStep, index) => {
55
56
  const action = sequenceStep[0];
56
57
  let tmpComponent;
@@ -60,6 +61,10 @@ class NetGraph {
60
61
  this.print(...sequenceStep);
61
62
  const [, component, pin] = sequenceStep;
62
63
  const tmpInstanceName = component.instanceName;
64
+ if (action === ExecutionScope_js_1.SequenceAction.At) {
65
+ previousNode = null;
66
+ previousPin = null;
67
+ }
63
68
  if (!graph.hasNode(tmpInstanceName)) {
64
69
  this.print('create instance', tmpInstanceName);
65
70
  const { displayProp = null } = component;
@@ -83,8 +88,15 @@ class NetGraph {
83
88
  tmpComponent = new layout_js_1.RenderComponent(component, useWidth, useHeight);
84
89
  tmpComponent.symbol = tmpSymbol;
85
90
  graph.setNode(tmpInstanceName, [RenderItemType.Component, tmpComponent, index]);
86
- const currentFrame = frameStack[frameStack.length - 1];
87
- currentFrame && currentFrame.innerItems.push(tmpComponent);
91
+ let useFrame = frameStack[frameStack.length - 1];
92
+ if (nodeFrames.has(previousNode)) {
93
+ const previousNodeFrame = nodeFrames.get(previousNode);
94
+ if (previousNodeFrame !== useFrame) {
95
+ useFrame = previousNodeFrame;
96
+ }
97
+ }
98
+ useFrame && useFrame.innerItems.push(tmpComponent);
99
+ nodeFrames.set(tmpInstanceName, useFrame);
88
100
  }
89
101
  if (action === ExecutionScope_js_1.SequenceAction.To && previousNode && previousPin) {
90
102
  this.setGraphEdge(graph, previousNode, tmpInstanceName, makeEdgeValue(previousNode, previousPin, tmpInstanceName, pin, index));
@@ -116,6 +128,7 @@ class NetGraph {
116
128
  wire.netName = useNet.toString();
117
129
  const wireName = getWireName(wire.id);
118
130
  graph.setNode(wireName, [RenderItemType.Wire, wire, index]);
131
+ let tmpPreviousNode = previousNode;
119
132
  this.setGraphEdge(graph, previousNode, wireName, makeEdgeValue(previousNode, previousPin, wireName, 0, index));
120
133
  previousNode = wireName;
121
134
  previousPin = 1;
@@ -132,6 +145,14 @@ class NetGraph {
132
145
  }
133
146
  return tmp;
134
147
  });
148
+ let useFrame = frameStack[frameStack.length - 1];
149
+ if (nodeFrames.has(tmpPreviousNode)) {
150
+ const previousNodeFrame = nodeFrames.get(tmpPreviousNode);
151
+ if (previousNodeFrame !== useFrame) {
152
+ useFrame = previousNodeFrame;
153
+ }
154
+ }
155
+ nodeFrames.set(wireName, useFrame);
135
156
  this.print(ExecutionScope_js_1.SequenceAction.Wire, wireId, JSON.stringify(wireSegmentsInfo));
136
157
  break;
137
158
  }
@@ -1241,6 +1241,8 @@ class RenderFrame extends RenderObject {
1241
1241
  this.containsTitle = false;
1242
1242
  this.frame = frame;
1243
1243
  this.renderType = type;
1244
+ this.frameId = RenderFrame.FrameIdCounter;
1245
+ RenderFrame.FrameIdCounter++;
1244
1246
  }
1245
1247
  toString() {
1246
1248
  let name = "";
@@ -1255,6 +1257,7 @@ class RenderFrame extends RenderObject {
1255
1257
  }
1256
1258
  }
1257
1259
  exports.RenderFrame = RenderFrame;
1260
+ RenderFrame.FrameIdCounter = 0;
1258
1261
  var RenderFrameType;
1259
1262
  (function (RenderFrameType) {
1260
1263
  RenderFrameType[RenderFrameType["Container"] = 1] = "Container";
package/dist/esm/graph.js CHANGED
@@ -26,6 +26,7 @@ export class NetGraph {
26
26
  const baseFrame = new RenderFrame(new Frame(FixedFrameIds.BaseFrame));
27
27
  const frameStack = [baseFrame];
28
28
  const containerFrames = [baseFrame];
29
+ const nodeFrames = new Map();
29
30
  sequence.forEach((sequenceStep, index) => {
30
31
  const action = sequenceStep[0];
31
32
  let tmpComponent;
@@ -35,6 +36,10 @@ export class NetGraph {
35
36
  this.print(...sequenceStep);
36
37
  const [, component, pin] = sequenceStep;
37
38
  const tmpInstanceName = component.instanceName;
39
+ if (action === SequenceAction.At) {
40
+ previousNode = null;
41
+ previousPin = null;
42
+ }
38
43
  if (!graph.hasNode(tmpInstanceName)) {
39
44
  this.print('create instance', tmpInstanceName);
40
45
  const { displayProp = null } = component;
@@ -58,8 +63,15 @@ export class NetGraph {
58
63
  tmpComponent = new RenderComponent(component, useWidth, useHeight);
59
64
  tmpComponent.symbol = tmpSymbol;
60
65
  graph.setNode(tmpInstanceName, [RenderItemType.Component, tmpComponent, index]);
61
- const currentFrame = frameStack[frameStack.length - 1];
62
- currentFrame && currentFrame.innerItems.push(tmpComponent);
66
+ let useFrame = frameStack[frameStack.length - 1];
67
+ if (nodeFrames.has(previousNode)) {
68
+ const previousNodeFrame = nodeFrames.get(previousNode);
69
+ if (previousNodeFrame !== useFrame) {
70
+ useFrame = previousNodeFrame;
71
+ }
72
+ }
73
+ useFrame && useFrame.innerItems.push(tmpComponent);
74
+ nodeFrames.set(tmpInstanceName, useFrame);
63
75
  }
64
76
  if (action === SequenceAction.To && previousNode && previousPin) {
65
77
  this.setGraphEdge(graph, previousNode, tmpInstanceName, makeEdgeValue(previousNode, previousPin, tmpInstanceName, pin, index));
@@ -91,6 +103,7 @@ export class NetGraph {
91
103
  wire.netName = useNet.toString();
92
104
  const wireName = getWireName(wire.id);
93
105
  graph.setNode(wireName, [RenderItemType.Wire, wire, index]);
106
+ let tmpPreviousNode = previousNode;
94
107
  this.setGraphEdge(graph, previousNode, wireName, makeEdgeValue(previousNode, previousPin, wireName, 0, index));
95
108
  previousNode = wireName;
96
109
  previousPin = 1;
@@ -107,6 +120,14 @@ export class NetGraph {
107
120
  }
108
121
  return tmp;
109
122
  });
123
+ let useFrame = frameStack[frameStack.length - 1];
124
+ if (nodeFrames.has(tmpPreviousNode)) {
125
+ const previousNodeFrame = nodeFrames.get(tmpPreviousNode);
126
+ if (previousNodeFrame !== useFrame) {
127
+ useFrame = previousNodeFrame;
128
+ }
129
+ }
130
+ nodeFrames.set(wireName, useFrame);
110
131
  this.print(SequenceAction.Wire, wireId, JSON.stringify(wireSegmentsInfo));
111
132
  break;
112
133
  }
@@ -1219,6 +1219,7 @@ export class RenderText extends RenderObject {
1219
1219
  }
1220
1220
  }
1221
1221
  export class RenderFrame extends RenderObject {
1222
+ static FrameIdCounter = 0;
1222
1223
  bounds = null;
1223
1224
  frame;
1224
1225
  innerItems = [];
@@ -1233,10 +1234,13 @@ export class RenderFrame extends RenderObject {
1233
1234
  subgraphId = "";
1234
1235
  renderType;
1235
1236
  containsTitle = false;
1237
+ frameId;
1236
1238
  constructor(frame, type = RenderFrameType.Container) {
1237
1239
  super();
1238
1240
  this.frame = frame;
1239
1241
  this.renderType = type;
1242
+ this.frameId = RenderFrame.FrameIdCounter;
1243
+ RenderFrame.FrameIdCounter++;
1240
1244
  }
1241
1245
  toString() {
1242
1246
  let name = "";
package/dist/libs/std.cst CHANGED
@@ -118,14 +118,15 @@ def diode():
118
118
  display: create graphic (params):
119
119
  triangle: -width/2, 0, width/2, 0, height
120
120
  vline: width/2, -height/2, height
121
- hpin: 1, -width/2-100, 0, 100 # anode
122
- hpin: 2, width/2 + 100, 0, -100 # cathode
121
+ hpin: 1, -width/2-100, 0, 100 # cathode
122
+ hpin: 2, width/2 + 100, 0, -100 # anode
123
123
  label: params.refdes, 0, -100, fontSize=50, anchor="middle", vanchor="top"
124
124
 
125
125
  def led(color):
126
126
  width = 100
127
127
  height = 100
128
128
 
129
+ # anode and cathode pin numbers follow KiCad
129
130
  return create component:
130
131
  pins:
131
132
  1: "cathode"
@@ -138,8 +139,8 @@ def led(color):
138
139
  "M", 130, 60, "L", 130, 90, "L", 100, 90)
139
140
  path: ("M", 120, 30, "L", 180, 90,
140
141
  "M", 180, 60, "L", 180, 90, "L", 150, 90)
141
- hpin: 1, -width/2-100, 0, 100 # anode
142
- hpin: 2, width/2 + 100, 0, -100 # cathode
142
+ hpin: 1, width/2 + 100, 0, -100 # cathode
143
+ hpin: 2, -width/2-100, 0, 100 # anode
143
144
  label: params.refdes, 0, -100, fontSize=50, anchor="middle", vanchor="top"
144
145
  label: params.color, 0, 100, fontSize=40, anchor="middle", vanchor="bottom"
145
146
  params:
@@ -148,6 +149,7 @@ def led(color):
148
149
  footprint: "LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder"
149
150
 
150
151
 
152
+
151
153
  def cgnd():
152
154
  net_name = "gnd"
153
155
  return create component:
@@ -217,6 +219,7 @@ def arrow_point():
217
219
  def no_connect(size=20):
218
220
  return create component:
219
221
  pins: 1
222
+ type: "graphic"
220
223
  display: create graphic:
221
224
  path: "M", -size, -size, "L", size, size
222
225
  path: "M", -size, size, "L", size, -size
@@ -107,6 +107,7 @@ export declare class RenderText extends RenderObject {
107
107
  constructor(text: string);
108
108
  }
109
109
  export declare class RenderFrame extends RenderObject {
110
+ static FrameIdCounter: number;
110
111
  bounds: BoundBox | null;
111
112
  frame: Frame;
112
113
  innerItems: (RenderComponent | RenderFrame | RenderText)[];
@@ -121,6 +122,7 @@ export declare class RenderFrame extends RenderObject {
121
122
  subgraphId: string;
122
123
  renderType: RenderFrameType;
123
124
  containsTitle: boolean;
125
+ frameId: number;
124
126
  constructor(frame: Frame, type?: RenderFrameType);
125
127
  toString(): string;
126
128
  }
package/libs/std.cst CHANGED
@@ -118,14 +118,15 @@ def diode():
118
118
  display: create graphic (params):
119
119
  triangle: -width/2, 0, width/2, 0, height
120
120
  vline: width/2, -height/2, height
121
- hpin: 1, -width/2-100, 0, 100 # anode
122
- hpin: 2, width/2 + 100, 0, -100 # cathode
121
+ hpin: 1, -width/2-100, 0, 100 # cathode
122
+ hpin: 2, width/2 + 100, 0, -100 # anode
123
123
  label: params.refdes, 0, -100, fontSize=50, anchor="middle", vanchor="top"
124
124
 
125
125
  def led(color):
126
126
  width = 100
127
127
  height = 100
128
128
 
129
+ # anode and cathode pin numbers follow KiCad
129
130
  return create component:
130
131
  pins:
131
132
  1: "cathode"
@@ -138,8 +139,8 @@ def led(color):
138
139
  "M", 130, 60, "L", 130, 90, "L", 100, 90)
139
140
  path: ("M", 120, 30, "L", 180, 90,
140
141
  "M", 180, 60, "L", 180, 90, "L", 150, 90)
141
- hpin: 1, -width/2-100, 0, 100 # anode
142
- hpin: 2, width/2 + 100, 0, -100 # cathode
142
+ hpin: 1, width/2 + 100, 0, -100 # cathode
143
+ hpin: 2, -width/2-100, 0, 100 # anode
143
144
  label: params.refdes, 0, -100, fontSize=50, anchor="middle", vanchor="top"
144
145
  label: params.color, 0, 100, fontSize=40, anchor="middle", vanchor="bottom"
145
146
  params:
@@ -148,6 +149,7 @@ def led(color):
148
149
  footprint: "LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder"
149
150
 
150
151
 
152
+
151
153
  def cgnd():
152
154
  net_name = "gnd"
153
155
  return create component:
@@ -217,6 +219,7 @@ def arrow_point():
217
219
  def no_connect(size=20):
218
220
  return create component:
219
221
  pins: 1
222
+ type: "graphic"
220
223
  display: create graphic:
221
224
  path: "M", -size, -size, "L", size, size
222
225
  path: "M", -size, size, "L", size, -size
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuitscript",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "description": "Interpreter for the circuitscript language",
5
5
  "homepage": "https://circuitscript.net",
6
6
  "engines": {