circuitscript 0.5.4 → 0.5.6

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.
Files changed (62) hide show
  1. package/README.md +105 -2
  2. package/dist/cjs/BaseVisitor.js +11 -10
  3. package/dist/cjs/builtinMethods.js +6 -5
  4. package/dist/cjs/environment/environment.js +2 -2
  5. package/dist/cjs/errors.js +140 -0
  6. package/dist/cjs/execute.js +12 -5
  7. package/dist/cjs/index.js +1 -0
  8. package/dist/cjs/main.js +3 -2
  9. package/dist/cjs/objects/ClassComponent.js +4 -4
  10. package/dist/cjs/objects/ExecutionScope.js +2 -2
  11. package/dist/cjs/objects/NumericValue.js +15 -0
  12. package/dist/cjs/objects/PinDefinition.js +2 -2
  13. package/dist/cjs/objects/types.js +2 -2
  14. package/dist/cjs/parser.js +3 -2
  15. package/dist/cjs/pipeline.js +21 -14
  16. package/dist/cjs/regenerate-tests.js +6 -6
  17. package/dist/cjs/render/draw_symbols.js +17 -17
  18. package/dist/cjs/render/geometry.js +6 -6
  19. package/dist/cjs/render/layout.js +325 -253
  20. package/dist/cjs/render/render.js +21 -18
  21. package/dist/cjs/semantic-tokens/getSemanticTokens.js +2 -2
  22. package/dist/cjs/sizing.js +2 -2
  23. package/dist/cjs/utils.js +13 -110
  24. package/dist/cjs/validate/validateScript.js +2 -2
  25. package/dist/cjs/visitor.js +14 -12
  26. package/dist/esm/BaseVisitor.js +2 -1
  27. package/dist/esm/builtinMethods.js +6 -5
  28. package/dist/esm/environment/environment.js +1 -1
  29. package/dist/esm/errors.js +119 -0
  30. package/dist/esm/execute.js +10 -3
  31. package/dist/esm/index.js +1 -0
  32. package/dist/esm/main.js +3 -2
  33. package/dist/esm/objects/ClassComponent.js +1 -1
  34. package/dist/esm/objects/ExecutionScope.js +1 -1
  35. package/dist/esm/objects/NumericValue.js +15 -0
  36. package/dist/esm/objects/PinDefinition.js +1 -1
  37. package/dist/esm/objects/types.js +1 -1
  38. package/dist/esm/parser.js +2 -1
  39. package/dist/esm/pipeline.js +10 -3
  40. package/dist/esm/regenerate-tests.js +6 -6
  41. package/dist/esm/render/draw_symbols.js +15 -15
  42. package/dist/esm/render/geometry.js +6 -6
  43. package/dist/esm/render/layout.js +325 -253
  44. package/dist/esm/render/render.js +22 -19
  45. package/dist/esm/semantic-tokens/getSemanticTokens.js +1 -1
  46. package/dist/esm/sizing.js +2 -2
  47. package/dist/esm/utils.js +10 -95
  48. package/dist/esm/validate/validateScript.js +1 -1
  49. package/dist/esm/visitor.js +4 -2
  50. package/dist/libs/std.cst +31 -31
  51. package/dist/types/BaseVisitor.d.ts +3 -1
  52. package/dist/types/errors.d.ts +37 -0
  53. package/dist/types/execute.d.ts +1 -1
  54. package/dist/types/helpers.d.ts +1 -1
  55. package/dist/types/index.d.ts +1 -0
  56. package/dist/types/objects/NumericValue.d.ts +5 -1
  57. package/dist/types/render/geometry.d.ts +4 -4
  58. package/dist/types/render/layout.d.ts +7 -1
  59. package/dist/types/utils.d.ts +2 -27
  60. package/dist/types/visitor.d.ts +1 -1
  61. package/libs/std.cst +31 -31
  62. package/package.json +5 -2
@@ -1,4 +1,4 @@
1
- import { ParserRuleContext, Token } from "antlr4ng";
1
+ import { ParserRuleContext } from "antlr4ng";
2
2
  import { ClassComponent } from "./objects/ClassComponent.js";
3
3
  import { SequenceAction, SequenceItem } from './objects/ExecutionScope.js';
4
4
  import { BlockTypes } from "./objects/BlockTypes.js";
@@ -24,43 +24,18 @@ export declare function resizeBounds(bounds: BoundBox, value: number): BoundBox;
24
24
  export declare function printBounds(bounds: BoundBox): string;
25
25
  export declare function resizeToNearestGrid(bounds: BoundBox, gridSize?: number): BoundBox;
26
26
  export declare function toNearestGrid(value: number, gridSize: number): number;
27
+ export declare function toNearestGrid2(value: number, gridSize: number): number;
27
28
  export declare function getBoundsSize(bounds: BoundBox): {
28
29
  width: number;
29
30
  height: number;
30
31
  };
31
32
  export declare function getPortType(component: ClassComponent): string | null;
32
- export declare function throwWithContext(context: ParserRuleContext, messageOrError: string | BaseError): void;
33
- export declare function throwWithToken(message: string, token: Token): void;
34
- export declare function throwWithTokenRange(message: string, startToken: Token, endToken?: Token): void;
35
33
  export declare function combineMaps(map1: Map<string, any>, map2: Map<string, any>): Map<string, any>;
36
34
  export declare function isPointWithinArea(point: [x: number, y: number], bounds: BoundBox2): boolean;
37
35
  export declare function areasOverlap(area1: BoundBox2, area2: BoundBox2): boolean;
38
36
  export declare function sequenceActionString(sequenceAction: SequenceAction): string;
39
37
  export declare function generateDebugSequenceAction(sequence: SequenceItem[]): string[];
40
38
  export declare function getBlockTypeString(type: BlockTypes): string;
41
- export declare class BaseError extends Error {
42
- name: string;
43
- message: string;
44
- startToken?: Token;
45
- endToken?: Token;
46
- filePath?: string;
47
- constructor(message: string, startTokenOrCtx?: Token | ParserRuleContext, endToken?: Token, filePath?: string);
48
- toString(): string;
49
- }
50
- export declare function getLinePositionAsString(ctx: ParserRuleContext): string | null;
51
- export declare class ParseSyntaxError extends BaseError {
52
- name: string;
53
- }
54
- export declare class ParseError extends ParseSyntaxError {
55
- name: string;
56
- }
57
- export declare class RuntimeExecutionError extends BaseError {
58
- name: string;
59
- }
60
- export declare class RenderError extends Error {
61
- stage?: string;
62
- constructor(message: string, stage?: string);
63
- }
64
39
  export type ExecutionWarning = {
65
40
  message: string;
66
41
  fileName?: string;
@@ -11,7 +11,7 @@ import { NodeScriptEnvironment } from './environment/environment.js';
11
11
  export declare class ParserVisitor extends BaseVisitor {
12
12
  constructor(silent: boolean | undefined, onErrorHandler: OnErrorHandler | null | undefined, environment: NodeScriptEnvironment);
13
13
  componentCreationIndex: number;
14
- creationCtx: Map<Wire | ClassComponent, ParserRuleContext>;
14
+ creationCtx: Map<ClassComponent | Wire, ParserRuleContext>;
15
15
  visitPin_select_expr: (ctx: Pin_select_exprContext) => void;
16
16
  trackNewComponentCreated: (callback: () => void) => boolean;
17
17
  visitAdd_component_expr: (ctx: Add_component_exprContext) => void;
package/libs/std.cst CHANGED
@@ -7,7 +7,7 @@ def net(net_name, net_type = "any"):
7
7
  display: create graphic (params):
8
8
  hline: -50, 0, 100
9
9
  vpin: 1, 0, 50, -50, display_id=false
10
- label: params.net_name, 0, -15, fontSize=50, anchor="middle"
10
+ label: params.net_name, 0, -15, fontSize=50, anchor="center"
11
11
  type: "net"
12
12
  params:
13
13
  net_name: net_name
@@ -39,7 +39,7 @@ def port(value, portType="input"):
39
39
  copy: true
40
40
  display: create graphic (params):
41
41
  text_color: "#222"
42
- label: params.value, 0, 0, fontSize=40, anchor="left", vanchor="middle", portType=portType
42
+ label: params.value, 0, 0, fontSize=40, anchor="left", vanchor="center", portType=portType
43
43
  pin: 1, 0, 0, 0, 0, display_id=false
44
44
  type: "port"
45
45
  params:
@@ -58,7 +58,7 @@ def res(value):
58
58
  hpin: 1, -width/2 - 30, 0, 30, display_id=false
59
59
  hpin: 2, width/2 + 30, 0, -30, display_id=false
60
60
  label: params.refdes, -width/2, -height/2 - 20, fontSize=50, anchor="left"
61
- label: params.value, 0, 0, fontSize=30, anchor="middle", vanchor="middle"
61
+ label: params.value, 0, 0, fontSize=30, anchor="center", vanchor="center"
62
62
  type: "res"
63
63
  params:
64
64
  value: value
@@ -78,8 +78,8 @@ def cap(value):
78
78
  hline: -width/2, -20, width
79
79
  vpin: 1, 0, -100, 80, display_id=false
80
80
  vpin: 2, 0, 100, -80, display_id=false
81
- label: params.refdes, 80, -30, fontSize=50, anchor="left", vanchor="middle"
82
- label: params.value, 80, 30, fontSize=50, anchor = "left", vanchor="middle"
81
+ label: params.refdes, 80, -30, fontSize=50, anchor="left", vanchor="center"
82
+ label: params.value, 80, 30, fontSize=50, anchor = "left", vanchor="center"
83
83
  type: "cap"
84
84
  params:
85
85
  value: value
@@ -101,7 +101,7 @@ def ind(value):
101
101
  hpin: 1, -width/2 - 100, 0, 100, display_id=false
102
102
  hpin: 2, width/2 + 100, 0, -100, display_id=false
103
103
  label: (params.refdes, -width/2, -height/2 - 25 , fontSize=50, anchor="left")
104
- label: (params.value, 0, 50, fontSize=50, anchor="middle", vanchor="middle")
104
+ label: (params.value, 0, 50, fontSize=50, anchor="center", vanchor="center")
105
105
  params:
106
106
  value: value
107
107
 
@@ -119,7 +119,7 @@ def diode():
119
119
  vline: width/2, -height/2, height
120
120
  hpin: 1, -width/2-100, 0, 100 # cathode
121
121
  hpin: 2, width/2 + 100, 0, -100 # anode
122
- label: params.refdes, 0, -100, fontSize=50, anchor="middle", vanchor="top"
122
+ label: params.refdes, 0, -100, fontSize=50, anchor="center", vanchor="top"
123
123
 
124
124
  def led(color):
125
125
  width = 100
@@ -140,8 +140,8 @@ def led(color):
140
140
  "M", 180, 60, "L", 180, 90, "L", 150, 90)
141
141
  hpin: 1, width/2 + 100, 0, -100 # cathode
142
142
  hpin: 2, -width/2-100, 0, 100 # anode
143
- label: params.refdes, 0, -100, fontSize=50, anchor="middle", vanchor="top"
144
- label: params.color, 0, 100, fontSize=40, anchor="middle", vanchor="bottom"
143
+ label: params.refdes, 0, -100, fontSize=50, anchor="center", vanchor="top"
144
+ label: params.color, 0, 100, fontSize=40, anchor="center", vanchor="bottom"
145
145
  params:
146
146
  size: "0603"
147
147
  color: color
@@ -159,7 +159,7 @@ def cgnd():
159
159
  hline: -10, 5, 20
160
160
  hline: -5, 10, 10
161
161
  vpin: 1, 0, -10, 10, display_id=false
162
- label: params.net_name, 0, 22, fontSize=50, anchor="middle"
162
+ label: params.net_name, 0, 22, fontSize=50, anchor="center"
163
163
  type: "net"
164
164
  params:
165
165
  net_name: net_name
@@ -175,7 +175,7 @@ def dgnd(net_name="GND"):
175
175
  display: create graphic (params):
176
176
  triangle: 0, 0, 0, height, width
177
177
  vpin: 1, 0, -50, 50, display_id=false
178
- label: params.net_name, 0, height + 50, fontSize=50, anchor="middle", vanchor="middle"
178
+ label: params.net_name, 0, height + 50, fontSize=50, anchor="center", vanchor="center"
179
179
  type: "net"
180
180
  params:
181
181
  net_name: net_name
@@ -296,30 +296,30 @@ def sheet_generator(paper_size_name, paper_width, paper_height, margin_x, margin
296
296
  content: i
297
297
  offset: tmp_x + tmp_width * ratio_x * (0.5 + (i-1)), tmp_y + inner_frame_margin * 0.5 + 2
298
298
  fontSize: fontSize
299
- anchor: "middle"
300
- vanchor: "middle"
299
+ anchor: "center"
300
+ vanchor: "center"
301
301
 
302
302
  text:
303
303
  content: i
304
304
  offset: tmp_x + tmp_width * ratio_x * (0.5 + (i-1)), tmp_y + tmp_height - inner_frame_margin * 0.5 + 2
305
305
  fontSize: fontSize
306
- anchor: "middle"
307
- vanchor: "middle"
306
+ anchor: "center"
307
+ vanchor: "center"
308
308
 
309
309
  for index, val in enumerate(row_display_value):
310
310
  text:
311
311
  content: val
312
312
  offset: tmp_x + inner_frame_margin * 0.5, tmp_y + tmp_height * ratio_y * (0.5 + index)
313
313
  fontSize: fontSize
314
- anchor: "middle"
315
- vanchor: "middle"
314
+ anchor: "center"
315
+ vanchor: "center"
316
316
 
317
317
  text:
318
318
  content: val
319
319
  offset: tmp_x + tmp_width - inner_frame_margin * 0.5, tmp_y + tmp_height * ratio_y * (0.5 + index)
320
320
  fontSize: fontSize
321
- anchor: "middle"
322
- vanchor: "middle"
321
+ anchor: "center"
322
+ vanchor: "center"
323
323
 
324
324
  # Draw title frame
325
325
  text:
@@ -375,47 +375,47 @@ def sheet_generator(paper_size_name, paper_width, paper_height, margin_x, margin
375
375
  grid_height: paper_height - 2 * margin_y
376
376
 
377
377
  def sheet_A1():
378
- paper_width = toMils(841)
379
- paper_height = toMils(594)
378
+ paper_width = to_mils(841)
379
+ paper_height = to_mils(594)
380
380
  margin = 400
381
381
 
382
382
  return sheet_generator("A1", paper_width, paper_height, margin, margin,
383
383
  range(1, 17), ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"])
384
384
 
385
385
  def sheet_A2():
386
- paper_width = toMils(594)
387
- paper_height = toMils(420)
386
+ paper_width = to_mils(594)
387
+ paper_height = to_mils(420)
388
388
  margin = 400
389
389
 
390
390
  return sheet_generator("A2", paper_width, paper_height, margin, margin,
391
391
  range(1, 13), ["A", "B", "C", "D", "E", "F", "G", "H"])
392
392
 
393
393
  def sheet_A3():
394
- paper_width = toMils(420)
395
- paper_height = toMils(297)
394
+ paper_width = to_mils(420)
395
+ paper_height = to_mils(297)
396
396
  margin = 400
397
397
 
398
398
  return sheet_generator("A3", paper_width, paper_height, margin, margin,
399
399
  range(1, 9), ["A", "B", "C", "D", "E", "F"])
400
400
 
401
401
  def sheet_A4():
402
- paper_width = toMils(297)
403
- paper_height = toMils(210)
402
+ paper_width = to_mils(297)
403
+ paper_height = to_mils(210)
404
404
  margin = 400
405
405
 
406
406
  return sheet_generator("A4", paper_width, paper_height, margin, margin,
407
407
  range(1, 7), ["A", "B", "C", "D"])
408
408
 
409
409
  def sheet_A5():
410
- paper_width = toMils(210)
411
- paper_height = toMils(148)
410
+ paper_width = to_mils(210)
411
+ paper_height = to_mils(148)
412
412
  margin = 400
413
413
 
414
414
  return sheet_generator("A5", paper_width, paper_height, margin, margin, range(1, 5), ["A", "B", "C"])
415
415
 
416
416
  def sheet_A6(revision="V1"):
417
- paper_width = toMils(148)
418
- paper_height = toMils(105)
417
+ paper_width = to_mils(148)
418
+ paper_height = to_mils(105)
419
419
  margin = 400
420
420
 
421
421
  tmp_sheet = sheet_generator("A6", paper_width, paper_height, margin, margin, range(1, 4), ["A", "B"])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuitscript",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "Interpreter for the circuitscript language",
5
5
  "homepage": "https://circuitscript.net",
6
6
  "engines": {
@@ -39,6 +39,7 @@
39
39
  "eslint-config-prettier": "~8.8",
40
40
  "eslint-plugin-jest": "~27.2",
41
41
  "jest": "~29.5",
42
+ "license-check-and-add": "^4.0.5",
42
43
  "prettier": "~2.8",
43
44
  "rimraf": "~5.0",
44
45
  "source-map-support": "^0.5.21",
@@ -76,7 +77,9 @@
76
77
  "changelog": "auto-changelog --handlebars-setup ../changelog/helper.js -p",
77
78
  "preversion": "npm run test",
78
79
  "version": "npm run changelog && git add CHANGELOG.md",
79
- "copy-assets": "mkdir -p dist/fonts && mkdir -p dist/libs && cp -r fonts dist/ && cp -r libs dist/"
80
+ "copy-assets": "mkdir -p dist/fonts && mkdir -p dist/libs && cp -r fonts dist/ && cp -r libs dist/",
81
+ "license:check": "license-check-and-add check -f licensecheck.json",
82
+ "license:add": "license-check-and-add add -f licensecheck.json"
80
83
  },
81
84
  "boilerplate_author": "Jakub Synowiec <jsynowiec@users.noreply.github.com>",
82
85
  "license": "MIT",