@skillpet/circuit 0.5.0 → 0.5.2

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 (333) hide show
  1. package/LICENSE +43 -0
  2. package/README.md +24 -30
  3. package/dist/circuit.bundle.js +0 -1
  4. package/dist/circuit.bundle.min.js +0 -1
  5. package/dist/circuit.esm.js +0 -1
  6. package/dist/config.d.ts +0 -1
  7. package/dist/container.d.ts +0 -1
  8. package/dist/drawing-gradient.d.ts +0 -1
  9. package/dist/drawing-stack.d.ts +0 -1
  10. package/dist/drawing-transition.d.ts +0 -1
  11. package/dist/drawing.d.ts +0 -1
  12. package/dist/element-label.d.ts +0 -1
  13. package/dist/element-style.d.ts +0 -1
  14. package/dist/element.d.ts +0 -1
  15. package/dist/element2term.d.ts +0 -1
  16. package/dist/elements/cables.d.ts +0 -1
  17. package/dist/elements/capacitor.d.ts +0 -1
  18. package/dist/elements/compound.d.ts +0 -1
  19. package/dist/elements/connectors.d.ts +0 -1
  20. package/dist/elements/crystal.d.ts +0 -1
  21. package/dist/elements/diode-more.d.ts +0 -1
  22. package/dist/elements/diode.d.ts +0 -1
  23. package/dist/elements/element-compound.d.ts +0 -1
  24. package/dist/elements/element-drawing.d.ts +0 -1
  25. package/dist/elements/ground.d.ts +0 -1
  26. package/dist/elements/ic.d.ts +0 -1
  27. package/dist/elements/image.d.ts +0 -1
  28. package/dist/elements/inductor.d.ts +0 -1
  29. package/dist/elements/line.d.ts +0 -1
  30. package/dist/elements/lines-arc-labels.d.ts +0 -1
  31. package/dist/elements/lines-elements.d.ts +0 -1
  32. package/dist/elements/misc-elements.d.ts +0 -1
  33. package/dist/elements/oneterm.d.ts +0 -1
  34. package/dist/elements/opamp.d.ts +0 -1
  35. package/dist/elements/outlets.d.ts +0 -1
  36. package/dist/elements/resistor-more.d.ts +0 -1
  37. package/dist/elements/resistor.d.ts +0 -1
  38. package/dist/elements/source-v.d.ts +0 -1
  39. package/dist/elements/sources.d.ts +0 -1
  40. package/dist/elements/switches.d.ts +0 -1
  41. package/dist/elements/transformer.d.ts +0 -1
  42. package/dist/elements/transistors.d.ts +0 -1
  43. package/dist/elements/tubes.d.ts +0 -1
  44. package/dist/elements/twoports.d.ts +0 -1
  45. package/dist/elements/twoterm-extras.d.ts +0 -1
  46. package/dist/elements/twoterm.d.ts +0 -1
  47. package/dist/geometry/point.d.ts +0 -1
  48. package/dist/geometry/roundcorners.d.ts +0 -1
  49. package/dist/geometry/transform.d.ts +0 -1
  50. package/dist/geometry/util.d.ts +0 -1
  51. package/dist/index.cjs +0 -1
  52. package/dist/index.d.ts +0 -1
  53. package/dist/json/anchor-ref.d.ts +0 -1
  54. package/dist/json/mount.d.ts +0 -1
  55. package/dist/json/registry.d.ts +0 -1
  56. package/dist/json/render.d.ts +0 -1
  57. package/dist/json/theme.d.ts +0 -1
  58. package/dist/json/types.d.ts +0 -1
  59. package/dist/json/validate.d.ts +0 -1
  60. package/dist/label-hint.d.ts +0 -1
  61. package/dist/logic/and.d.ts +0 -1
  62. package/dist/logic/bitfield.d.ts +0 -1
  63. package/dist/logic/buffer.d.ts +0 -1
  64. package/dist/logic/extras.d.ts +0 -1
  65. package/dist/logic/kmap.d.ts +0 -1
  66. package/dist/logic/or.d.ts +0 -1
  67. package/dist/logic/timing.d.ts +0 -1
  68. package/dist/logic/tristate.d.ts +0 -1
  69. package/dist/math-render.d.ts +0 -1
  70. package/dist/package-api.d.ts +0 -1
  71. package/dist/params.d.ts +0 -1
  72. package/dist/react/index.d.ts +0 -1
  73. package/dist/react/index.js +0 -1
  74. package/dist/segment.d.ts +0 -1
  75. package/dist/style.d.ts +0 -1
  76. package/dist/subsystems/dsp.d.ts +0 -1
  77. package/dist/subsystems/flow.d.ts +0 -1
  78. package/dist/subsystems/index.d.ts +0 -1
  79. package/dist/subsystems/parsing.d.ts +0 -1
  80. package/dist/subsystems/pictorial.d.ts +0 -1
  81. package/dist/svg/constants.d.ts +0 -1
  82. package/dist/svg/figure.d.ts +0 -1
  83. package/dist/svg/fmt.d.ts +0 -1
  84. package/dist/svg/svg-style.d.ts +0 -1
  85. package/dist/types.d.ts +0 -1
  86. package/dist/version.d.ts +0 -1
  87. package/dist/vue/index.d.ts +0 -1
  88. package/dist/vue/index.js +0 -1
  89. package/package.json +22 -9
  90. package/dist/circuit.bundle.js.map +0 -7
  91. package/dist/circuit.bundle.min.js.map +0 -7
  92. package/dist/circuit.esm.js.map +0 -7
  93. package/dist/config.d.ts.map +0 -1
  94. package/dist/config.js +0 -23
  95. package/dist/config.js.map +0 -1
  96. package/dist/container.d.ts.map +0 -1
  97. package/dist/container.js +0 -101
  98. package/dist/container.js.map +0 -1
  99. package/dist/drawing-gradient.d.ts.map +0 -1
  100. package/dist/drawing-gradient.js +0 -39
  101. package/dist/drawing-gradient.js.map +0 -1
  102. package/dist/drawing-stack.d.ts.map +0 -1
  103. package/dist/drawing-stack.js +0 -32
  104. package/dist/drawing-stack.js.map +0 -1
  105. package/dist/drawing-transition.d.ts.map +0 -1
  106. package/dist/drawing-transition.js +0 -181
  107. package/dist/drawing-transition.js.map +0 -1
  108. package/dist/drawing.d.ts.map +0 -1
  109. package/dist/drawing.js +0 -337
  110. package/dist/drawing.js.map +0 -1
  111. package/dist/element-label.d.ts.map +0 -1
  112. package/dist/element-label.js +0 -377
  113. package/dist/element-label.js.map +0 -1
  114. package/dist/element-style.d.ts.map +0 -1
  115. package/dist/element-style.js +0 -51
  116. package/dist/element-style.js.map +0 -1
  117. package/dist/element.d.ts.map +0 -1
  118. package/dist/element.js +0 -514
  119. package/dist/element.js.map +0 -1
  120. package/dist/element2term.d.ts.map +0 -1
  121. package/dist/element2term.js +0 -245
  122. package/dist/element2term.js.map +0 -1
  123. package/dist/elements/cables.d.ts.map +0 -1
  124. package/dist/elements/cables.js +0 -100
  125. package/dist/elements/cables.js.map +0 -1
  126. package/dist/elements/capacitor.d.ts.map +0 -1
  127. package/dist/elements/capacitor.js +0 -93
  128. package/dist/elements/capacitor.js.map +0 -1
  129. package/dist/elements/compound.d.ts.map +0 -1
  130. package/dist/elements/compound.js +0 -266
  131. package/dist/elements/compound.js.map +0 -1
  132. package/dist/elements/connectors.d.ts.map +0 -1
  133. package/dist/elements/connectors.js +0 -578
  134. package/dist/elements/connectors.js.map +0 -1
  135. package/dist/elements/crystal.d.ts.map +0 -1
  136. package/dist/elements/crystal.js +0 -31
  137. package/dist/elements/crystal.js.map +0 -1
  138. package/dist/elements/diode-more.d.ts.map +0 -1
  139. package/dist/elements/diode-more.js +0 -233
  140. package/dist/elements/diode-more.js.map +0 -1
  141. package/dist/elements/diode.d.ts.map +0 -1
  142. package/dist/elements/diode.js +0 -58
  143. package/dist/elements/diode.js.map +0 -1
  144. package/dist/elements/element-compound.d.ts.map +0 -1
  145. package/dist/elements/element-compound.js +0 -68
  146. package/dist/elements/element-compound.js.map +0 -1
  147. package/dist/elements/element-drawing.d.ts.map +0 -1
  148. package/dist/elements/element-drawing.js +0 -16
  149. package/dist/elements/element-drawing.js.map +0 -1
  150. package/dist/elements/ground.d.ts.map +0 -1
  151. package/dist/elements/ground.js +0 -30
  152. package/dist/elements/ground.js.map +0 -1
  153. package/dist/elements/ic.d.ts.map +0 -1
  154. package/dist/elements/ic.js +0 -816
  155. package/dist/elements/ic.js.map +0 -1
  156. package/dist/elements/image.d.ts.map +0 -1
  157. package/dist/elements/image.js +0 -27
  158. package/dist/elements/image.js.map +0 -1
  159. package/dist/elements/inductor.d.ts.map +0 -1
  160. package/dist/elements/inductor.js +0 -111
  161. package/dist/elements/inductor.js.map +0 -1
  162. package/dist/elements/line.d.ts.map +0 -1
  163. package/dist/elements/line.js +0 -14
  164. package/dist/elements/line.js.map +0 -1
  165. package/dist/elements/lines-arc-labels.d.ts.map +0 -1
  166. package/dist/elements/lines-arc-labels.js +0 -822
  167. package/dist/elements/lines-arc-labels.js.map +0 -1
  168. package/dist/elements/lines-elements.d.ts.map +0 -1
  169. package/dist/elements/lines-elements.js +0 -271
  170. package/dist/elements/lines-elements.js.map +0 -1
  171. package/dist/elements/misc-elements.d.ts.map +0 -1
  172. package/dist/elements/misc-elements.js +0 -160
  173. package/dist/elements/misc-elements.js.map +0 -1
  174. package/dist/elements/oneterm.d.ts.map +0 -1
  175. package/dist/elements/oneterm.js +0 -163
  176. package/dist/elements/oneterm.js.map +0 -1
  177. package/dist/elements/opamp.d.ts.map +0 -1
  178. package/dist/elements/opamp.js +0 -72
  179. package/dist/elements/opamp.js.map +0 -1
  180. package/dist/elements/outlets.d.ts.map +0 -1
  181. package/dist/elements/outlets.js +0 -285
  182. package/dist/elements/outlets.js.map +0 -1
  183. package/dist/elements/resistor-more.d.ts.map +0 -1
  184. package/dist/elements/resistor-more.js +0 -171
  185. package/dist/elements/resistor-more.js.map +0 -1
  186. package/dist/elements/resistor.d.ts.map +0 -1
  187. package/dist/elements/resistor.js +0 -22
  188. package/dist/elements/resistor.js.map +0 -1
  189. package/dist/elements/source-v.d.ts.map +0 -1
  190. package/dist/elements/source-v.js +0 -3
  191. package/dist/elements/source-v.js.map +0 -1
  192. package/dist/elements/sources.d.ts.map +0 -1
  193. package/dist/elements/sources.js +0 -519
  194. package/dist/elements/sources.js.map +0 -1
  195. package/dist/elements/switches.d.ts.map +0 -1
  196. package/dist/elements/switches.js +0 -328
  197. package/dist/elements/switches.js.map +0 -1
  198. package/dist/elements/transformer.d.ts.map +0 -1
  199. package/dist/elements/transformer.js +0 -184
  200. package/dist/elements/transformer.js.map +0 -1
  201. package/dist/elements/transistors.d.ts.map +0 -1
  202. package/dist/elements/transistors.js +0 -1009
  203. package/dist/elements/transistors.js.map +0 -1
  204. package/dist/elements/tubes.d.ts.map +0 -1
  205. package/dist/elements/tubes.js +0 -386
  206. package/dist/elements/tubes.js.map +0 -1
  207. package/dist/elements/twoports.d.ts.map +0 -1
  208. package/dist/elements/twoports.js +0 -231
  209. package/dist/elements/twoports.js.map +0 -1
  210. package/dist/elements/twoterm-extras.d.ts.map +0 -1
  211. package/dist/elements/twoterm-extras.js +0 -243
  212. package/dist/elements/twoterm-extras.js.map +0 -1
  213. package/dist/elements/twoterm.d.ts.map +0 -1
  214. package/dist/elements/twoterm.js +0 -4
  215. package/dist/elements/twoterm.js.map +0 -1
  216. package/dist/geometry/point.d.ts.map +0 -1
  217. package/dist/geometry/point.js +0 -99
  218. package/dist/geometry/point.js.map +0 -1
  219. package/dist/geometry/roundcorners.d.ts.map +0 -1
  220. package/dist/geometry/roundcorners.js +0 -64
  221. package/dist/geometry/roundcorners.js.map +0 -1
  222. package/dist/geometry/transform.d.ts.map +0 -1
  223. package/dist/geometry/transform.js +0 -33
  224. package/dist/geometry/transform.js.map +0 -1
  225. package/dist/geometry/util.d.ts.map +0 -1
  226. package/dist/geometry/util.js +0 -36
  227. package/dist/geometry/util.js.map +0 -1
  228. package/dist/index.cjs.map +0 -7
  229. package/dist/index.d.ts.map +0 -1
  230. package/dist/index.js +0 -68
  231. package/dist/index.js.map +0 -1
  232. package/dist/json/anchor-ref.d.ts.map +0 -1
  233. package/dist/json/anchor-ref.js +0 -35
  234. package/dist/json/anchor-ref.js.map +0 -1
  235. package/dist/json/mount.d.ts.map +0 -1
  236. package/dist/json/mount.js +0 -369
  237. package/dist/json/mount.js.map +0 -1
  238. package/dist/json/registry.d.ts.map +0 -1
  239. package/dist/json/registry.js +0 -323
  240. package/dist/json/registry.js.map +0 -1
  241. package/dist/json/render.d.ts.map +0 -1
  242. package/dist/json/render.js +0 -113
  243. package/dist/json/render.js.map +0 -1
  244. package/dist/json/theme.d.ts.map +0 -1
  245. package/dist/json/theme.js +0 -57
  246. package/dist/json/theme.js.map +0 -1
  247. package/dist/json/types.d.ts.map +0 -1
  248. package/dist/json/types.js +0 -2
  249. package/dist/json/types.js.map +0 -1
  250. package/dist/json/validate.d.ts.map +0 -1
  251. package/dist/json/validate.js +0 -77
  252. package/dist/json/validate.js.map +0 -1
  253. package/dist/label-hint.d.ts.map +0 -1
  254. package/dist/label-hint.js +0 -2
  255. package/dist/label-hint.js.map +0 -1
  256. package/dist/logic/and.d.ts.map +0 -1
  257. package/dist/logic/and.js +0 -63
  258. package/dist/logic/and.js.map +0 -1
  259. package/dist/logic/bitfield.d.ts.map +0 -1
  260. package/dist/logic/bitfield.js +0 -271
  261. package/dist/logic/bitfield.js.map +0 -1
  262. package/dist/logic/buffer.d.ts.map +0 -1
  263. package/dist/logic/buffer.js +0 -46
  264. package/dist/logic/buffer.js.map +0 -1
  265. package/dist/logic/extras.d.ts.map +0 -1
  266. package/dist/logic/extras.js +0 -211
  267. package/dist/logic/extras.js.map +0 -1
  268. package/dist/logic/kmap.d.ts.map +0 -1
  269. package/dist/logic/kmap.js +0 -163
  270. package/dist/logic/kmap.js.map +0 -1
  271. package/dist/logic/or.d.ts.map +0 -1
  272. package/dist/logic/or.js +0 -117
  273. package/dist/logic/or.js.map +0 -1
  274. package/dist/logic/timing.d.ts.map +0 -1
  275. package/dist/logic/timing.js +0 -791
  276. package/dist/logic/timing.js.map +0 -1
  277. package/dist/logic/tristate.d.ts.map +0 -1
  278. package/dist/logic/tristate.js +0 -48
  279. package/dist/logic/tristate.js.map +0 -1
  280. package/dist/math-render.d.ts.map +0 -1
  281. package/dist/math-render.js +0 -53
  282. package/dist/math-render.js.map +0 -1
  283. package/dist/package-api.d.ts.map +0 -1
  284. package/dist/package-api.js +0 -75
  285. package/dist/package-api.js.map +0 -1
  286. package/dist/params.d.ts.map +0 -1
  287. package/dist/params.js +0 -35
  288. package/dist/params.js.map +0 -1
  289. package/dist/react/index.d.ts.map +0 -1
  290. package/dist/react/index.js.map +0 -1
  291. package/dist/schemdraw-ts.bundle.js +0 -30448
  292. package/dist/schemdraw-ts.bundle.js.map +0 -7
  293. package/dist/segment.d.ts.map +0 -1
  294. package/dist/segment.js +0 -844
  295. package/dist/segment.js.map +0 -1
  296. package/dist/style.d.ts.map +0 -1
  297. package/dist/style.js +0 -230
  298. package/dist/style.js.map +0 -1
  299. package/dist/subsystems/dsp.d.ts.map +0 -1
  300. package/dist/subsystems/dsp.js +0 -267
  301. package/dist/subsystems/dsp.js.map +0 -1
  302. package/dist/subsystems/flow.d.ts.map +0 -1
  303. package/dist/subsystems/flow.js +0 -315
  304. package/dist/subsystems/flow.js.map +0 -1
  305. package/dist/subsystems/index.d.ts.map +0 -1
  306. package/dist/subsystems/index.js +0 -22
  307. package/dist/subsystems/index.js.map +0 -1
  308. package/dist/subsystems/parsing.d.ts.map +0 -1
  309. package/dist/subsystems/parsing.js +0 -456
  310. package/dist/subsystems/parsing.js.map +0 -1
  311. package/dist/subsystems/pictorial.d.ts.map +0 -1
  312. package/dist/subsystems/pictorial.js +0 -469
  313. package/dist/subsystems/pictorial.js.map +0 -1
  314. package/dist/svg/constants.d.ts.map +0 -1
  315. package/dist/svg/constants.js +0 -5
  316. package/dist/svg/constants.js.map +0 -1
  317. package/dist/svg/figure.d.ts.map +0 -1
  318. package/dist/svg/figure.js +0 -634
  319. package/dist/svg/figure.js.map +0 -1
  320. package/dist/svg/fmt.d.ts.map +0 -1
  321. package/dist/svg/fmt.js +0 -7
  322. package/dist/svg/fmt.js.map +0 -1
  323. package/dist/svg/svg-style.d.ts.map +0 -1
  324. package/dist/svg/svg-style.js +0 -46
  325. package/dist/svg/svg-style.js.map +0 -1
  326. package/dist/types.d.ts.map +0 -1
  327. package/dist/types.js +0 -21
  328. package/dist/types.js.map +0 -1
  329. package/dist/version.d.ts.map +0 -1
  330. package/dist/version.js +0 -3
  331. package/dist/version.js.map +0 -1
  332. package/dist/vue/index.d.ts.map +0 -1
  333. package/dist/vue/index.js.map +0 -1
@@ -1,456 +0,0 @@
1
- /**
2
- * Logic expression parsing and tree layout — TS port of Python `schemdraw.parsing`.
3
- *
4
- * Exports:
5
- * - `DrawTree`, `buchheim` — Buchheim-Reingold-Tilford tree layout
6
- * - `LogicTree` — intermediate tree for logic gates
7
- * - `logicparse` — parse a logic string into a Drawing of logic gates
8
- */
9
- import { Drawing } from "../drawing.js";
10
- import { And, nand } from "../logic/and.js";
11
- import { Or, nor, xor, xnor } from "../logic/or.js";
12
- import { Buf, Not } from "../logic/buffer.js";
13
- import { RightLines } from "../elements/connectors.js";
14
- // ---------------------------------------------------------------------------
15
- // LogicTree
16
- // ---------------------------------------------------------------------------
17
- export class LogicTree {
18
- node;
19
- children;
20
- constructor(node, ...children) {
21
- this.node = node;
22
- this.children = children;
23
- }
24
- [Symbol.iterator]() {
25
- return this.children[Symbol.iterator]();
26
- }
27
- }
28
- // ---------------------------------------------------------------------------
29
- // Buchheim-Reingold-Tilford tree layout
30
- // Source: Bill Mill https://llimllib.github.io/pymag-trees/
31
- // ---------------------------------------------------------------------------
32
- export class DrawTree {
33
- x = -1;
34
- y;
35
- node;
36
- children;
37
- parent;
38
- thread = null;
39
- mod = 0;
40
- ancestor = this;
41
- change = 0;
42
- shift = 0;
43
- number;
44
- _lmostSibling = null;
45
- constructor(tree, parent = null, depth = 0, number = 1) {
46
- this.y = depth;
47
- this.node = tree.node;
48
- this.parent = parent;
49
- this.number = number;
50
- this.children = tree.children.map((c, i) => new DrawTree(c, this, depth + 1, i + 1));
51
- this.ancestor = this;
52
- }
53
- left() {
54
- return this.thread ?? (this.children.length > 0 ? this.children[0] : null);
55
- }
56
- right() {
57
- return this.thread ?? (this.children.length > 0 ? this.children[this.children.length - 1] : null);
58
- }
59
- lbrother() {
60
- let n = null;
61
- if (this.parent) {
62
- for (const node of this.parent.children) {
63
- if (node === this)
64
- return n;
65
- n = node;
66
- }
67
- }
68
- return n;
69
- }
70
- get lmostSibling() {
71
- if (!this._lmostSibling && this.parent && this !== this.parent.children[0]) {
72
- this._lmostSibling = this.parent.children[0];
73
- }
74
- return this._lmostSibling;
75
- }
76
- }
77
- function thirdWalk(tree, n) {
78
- tree.x += n;
79
- for (const c of tree.children)
80
- thirdWalk(c, n);
81
- }
82
- function executeShifts(v) {
83
- let shift = 0;
84
- let change = 0;
85
- for (let i = v.children.length - 1; i >= 0; i--) {
86
- const w = v.children[i];
87
- w.x += shift;
88
- w.mod += shift;
89
- change += w.change;
90
- shift += w.shift + change;
91
- }
92
- }
93
- function ancestor(vil, v, defaultAncestor) {
94
- if (v.parent && v.parent.children.includes(vil.ancestor)) {
95
- return vil.ancestor;
96
- }
97
- return defaultAncestor;
98
- }
99
- function moveSubtree(wl, wr, shift) {
100
- const subtrees = wr.number - wl.number;
101
- wr.change -= shift / subtrees;
102
- wr.shift += shift;
103
- wl.change += shift / subtrees;
104
- wr.x += shift;
105
- wr.mod += shift;
106
- }
107
- function apportion(v, defaultAncestor, distance) {
108
- const w = v.lbrother();
109
- if (w !== null) {
110
- let vir = v;
111
- let vor = v;
112
- let vil = w;
113
- let vol = v.lmostSibling;
114
- let sir = v.mod;
115
- let sor = v.mod;
116
- let sil = vil.mod;
117
- let sol = vol.mod;
118
- while (vil.right() && vir.left()) {
119
- vil = vil.right();
120
- vir = vir.left();
121
- vol = vol.left();
122
- vor = vor.right();
123
- vor.ancestor = v;
124
- const shift = (vil.x + sil) - (vir.x + sir) + distance;
125
- if (shift > 0) {
126
- moveSubtree(ancestor(vil, v, defaultAncestor), v, shift);
127
- sir += shift;
128
- sor += shift;
129
- }
130
- sil += vil.mod;
131
- sir += vir.mod;
132
- sol += vol.mod;
133
- sor += vor.mod;
134
- }
135
- if (vil.right() && !vor.right()) {
136
- vor.thread = vil.right();
137
- vor.mod += sil - sor;
138
- }
139
- else {
140
- if (vir.left() && !vol.left()) {
141
- vol.thread = vir.left();
142
- vol.mod += sir - sol;
143
- }
144
- defaultAncestor = v;
145
- }
146
- }
147
- return defaultAncestor;
148
- }
149
- function firstwalk(v, distance = 1) {
150
- if (v.children.length === 0) {
151
- if (v.lmostSibling) {
152
- v.x = v.lbrother().x + distance;
153
- }
154
- else {
155
- v.x = 0;
156
- }
157
- }
158
- else {
159
- let defaultAncestor = v.children[0];
160
- for (const w of v.children) {
161
- firstwalk(w);
162
- defaultAncestor = apportion(w, defaultAncestor, distance);
163
- }
164
- executeShifts(v);
165
- const midpoint = (v.children[0].x + v.children[v.children.length - 1].x) / 2;
166
- const w = v.lbrother();
167
- if (w) {
168
- v.x = w.x + distance;
169
- v.mod = v.x - midpoint;
170
- }
171
- else {
172
- v.x = midpoint;
173
- }
174
- }
175
- return v;
176
- }
177
- function secondWalk(v, m = 0, depth = 0, min = null) {
178
- v.x += m;
179
- v.y = depth;
180
- if (min === null || v.x < min)
181
- min = v.x;
182
- for (const w of v.children) {
183
- min = secondWalk(w, m + v.mod, depth + 1, min);
184
- }
185
- return min;
186
- }
187
- export function buchheim(tree) {
188
- const dt = firstwalk(new DrawTree(tree));
189
- const min = secondWalk(dt);
190
- if (min < 0)
191
- thirdWalk(dt, -min);
192
- return dt;
193
- }
194
- // ---------------------------------------------------------------------------
195
- // Tokeniser / recursive-descent parser (replaces pyparsing)
196
- // ---------------------------------------------------------------------------
197
- const KEYWORDS = new Set(["and", "or", "not", "nand", "nor", "xor", "xnor", "true", "false"]);
198
- var TT;
199
- (function (TT) {
200
- TT[TT["IDENT"] = 0] = "IDENT";
201
- TT[TT["KEYWORD"] = 1] = "KEYWORD";
202
- TT[TT["LPAREN"] = 2] = "LPAREN";
203
- TT[TT["RPAREN"] = 3] = "RPAREN";
204
- TT[TT["SYMBOL"] = 4] = "SYMBOL";
205
- TT[TT["EOF"] = 5] = "EOF";
206
- })(TT || (TT = {}));
207
- function tokenize(src) {
208
- const tokens = [];
209
- let i = 0;
210
- while (i < src.length) {
211
- const ch = src[i];
212
- if (/\s/.test(ch)) {
213
- i++;
214
- continue;
215
- }
216
- if (ch === "(") {
217
- tokens.push({ tt: TT.LPAREN, val: "(" });
218
- i++;
219
- continue;
220
- }
221
- if (ch === ")") {
222
- tokens.push({ tt: TT.RPAREN, val: ")" });
223
- i++;
224
- continue;
225
- }
226
- if ("&|+~¬∧∨⊕⊻".includes(ch)) {
227
- tokens.push({ tt: TT.SYMBOL, val: ch });
228
- i++;
229
- continue;
230
- }
231
- if (/[$_a-zA-Z]/.test(ch)) {
232
- let word = "";
233
- while (i < src.length && /[$_a-zA-Z0-9]/.test(src[i])) {
234
- word += src[i];
235
- i++;
236
- }
237
- if (KEYWORDS.has(word)) {
238
- tokens.push({ tt: TT.KEYWORD, val: word });
239
- }
240
- else {
241
- tokens.push({ tt: TT.IDENT, val: word });
242
- }
243
- continue;
244
- }
245
- throw new Error(`logicparse: unexpected character '${ch}'`);
246
- }
247
- tokens.push({ tt: TT.EOF, val: "" });
248
- return tokens;
249
- }
250
- /**
251
- * Recursive-descent parser matching the pyparsing grammar's precedence:
252
- * expr = xorExpr ( xorOp xorExpr )*
253
- * xorExpr = orExpr ( orOp orExpr )*
254
- * orExpr = andExpr ( andOp andExpr )*
255
- * andExpr = notOp andExpr | atom
256
- * atom = IDENT | 'true' | 'false' | '(' expr ')'
257
- *
258
- * Python pyparsing infixNotation precedence (tightest→loosest): not, and, or, xor.
259
- */
260
- class Parser {
261
- tokens;
262
- pos = 0;
263
- constructor(tokens) {
264
- this.tokens = tokens;
265
- }
266
- peek() { return this.tokens[this.pos]; }
267
- advance() { return this.tokens[this.pos++]; }
268
- expect(tt, val) {
269
- const t = this.advance();
270
- if (t.tt !== tt || (val !== undefined && t.val !== val)) {
271
- throw new Error(`logicparse: expected ${val ?? TT[tt]}, got '${t.val}'`);
272
- }
273
- return t;
274
- }
275
- parse() {
276
- const node = this.xorExpr();
277
- if (this.peek().tt !== TT.EOF) {
278
- throw new Error(`logicparse: unexpected token '${this.peek().val}'`);
279
- }
280
- return node;
281
- }
282
- isNotOp(t) {
283
- return (t.tt === TT.KEYWORD && t.val === "not") ||
284
- (t.tt === TT.SYMBOL && (t.val === "~" || t.val === "¬"));
285
- }
286
- isAndOp(t) {
287
- return (t.tt === TT.KEYWORD && (t.val === "and" || t.val === "nand")) ||
288
- (t.tt === TT.SYMBOL && (t.val === "&" || t.val === "∧"));
289
- }
290
- isOrOp(t) {
291
- return (t.tt === TT.KEYWORD && (t.val === "or" || t.val === "nor")) ||
292
- (t.tt === TT.SYMBOL && (t.val === "|" || t.val === "∨" || t.val === "+"));
293
- }
294
- isXorOp(t) {
295
- return (t.tt === TT.KEYWORD && (t.val === "xor" || t.val === "xnor")) ||
296
- (t.tt === TT.SYMBOL && (t.val === "⊕" || t.val === "⊻"));
297
- }
298
- xorExpr() {
299
- let left = this.orExpr();
300
- while (this.isXorOp(this.peek())) {
301
- const op = this.advance();
302
- const right = this.orExpr();
303
- left = { kind: "binary", op: op.val, left, right };
304
- }
305
- return left;
306
- }
307
- orExpr() {
308
- let left = this.andExpr();
309
- while (this.isOrOp(this.peek())) {
310
- const op = this.advance();
311
- const right = this.andExpr();
312
- left = { kind: "binary", op: op.val, left, right };
313
- }
314
- return left;
315
- }
316
- andExpr() {
317
- let left = this.unary();
318
- while (this.isAndOp(this.peek())) {
319
- const op = this.advance();
320
- const right = this.unary();
321
- left = { kind: "binary", op: op.val, left, right };
322
- }
323
- return left;
324
- }
325
- unary() {
326
- if (this.isNotOp(this.peek())) {
327
- this.advance();
328
- const operand = this.unary();
329
- return { kind: "unary", operand };
330
- }
331
- return this.atom();
332
- }
333
- atom() {
334
- const t = this.peek();
335
- if (t.tt === TT.LPAREN) {
336
- this.advance();
337
- const inner = this.xorExpr();
338
- this.expect(TT.RPAREN, ")");
339
- return inner;
340
- }
341
- if (t.tt === TT.IDENT || (t.tt === TT.KEYWORD && (t.val === "true" || t.val === "false"))) {
342
- this.advance();
343
- return { kind: "ident", name: t.val };
344
- }
345
- throw new Error(`logicparse: unexpected token '${t.val}'`);
346
- }
347
- }
348
- function collectBinary(node, op) {
349
- if (node.kind === "binary" && node.op === op) {
350
- return [...collectBinary(node.left, op), ...collectBinary(node.right, op)];
351
- }
352
- return [node];
353
- }
354
- function normalizeOp(op) {
355
- return { "&": "and", "∧": "and", "|": "or", "∨": "or", "+": "or", "⊕": "xor", "⊻": "xor" }[op] ?? op;
356
- }
357
- const INVERT_MAP = {
358
- and: "nand", or: "nor", not: "buf",
359
- nand: "and", nor: "or", buf: "not",
360
- xor: "xnor", xnor: "xor",
361
- };
362
- function toLogicTree(node) {
363
- if (node.kind === "ident") {
364
- return new LogicTree(node.name);
365
- }
366
- if (node.kind === "unary") {
367
- if (node.operand.kind === "ident") {
368
- return new LogicTree("not", toLogicTree(node.operand));
369
- }
370
- const inner = node.operand;
371
- if (inner.kind === "binary") {
372
- const func = normalizeOp(inner.op);
373
- const inverted = INVERT_MAP[func];
374
- if (inverted) {
375
- const inputs = collectBinary(inner, inner.op);
376
- return new LogicTree(inverted, ...inputs.map(toLogicTree));
377
- }
378
- }
379
- if (inner.kind === "unary") {
380
- return toLogicTree(inner.operand);
381
- }
382
- return new LogicTree("not", toLogicTree(inner));
383
- }
384
- const func = normalizeOp(node.op);
385
- const inputs = collectBinary(node, node.op);
386
- return new LogicTree(func, ...inputs.map(toLogicTree));
387
- }
388
- const GATE_MAP = {
389
- and: And,
390
- or: Or,
391
- not: Not,
392
- buf: Buf,
393
- };
394
- function gateFactory(name, params) {
395
- const ctor = GATE_MAP[name];
396
- if (ctor)
397
- return new ctor(params);
398
- switch (name) {
399
- case "nand": return nand(params);
400
- case "nor": return nor(params);
401
- case "xor": return xor(params);
402
- case "xnor": return xnor(params);
403
- default: return new And(params);
404
- }
405
- }
406
- function isGateNode(name) {
407
- return name in GATE_MAP || ["nand", "nor", "xor", "xnor"].includes(name);
408
- }
409
- function drawLogic(tree, gateH = 0.7, gateW = 2, outlabel) {
410
- const drawing = new Drawing();
411
- drawing.unit = gateW;
412
- const dtree = buchheim(tree);
413
- function drawit(root, depth = 0, outlabel) {
414
- const isUnary = root.node === "not" || root.node === "buf";
415
- const params = {
416
- d: "r",
417
- at: [root.y * -gateW, -root.x * gateH],
418
- anchor: "end",
419
- l: gateW,
420
- ...(isUnary ? {} : { inputs: root.children.length }),
421
- };
422
- const g = gateFactory(root.node, params);
423
- if (outlabel)
424
- g.label(outlabel, { loc: "end" });
425
- for (let i = 0; i < root.children.length; i++) {
426
- const child = root.children[i];
427
- const anchorName = isUnary ? "start" : `in${i + 1}`;
428
- if (!isGateNode(child.node)) {
429
- g.label(child.node, { loc: anchorName });
430
- }
431
- }
432
- drawing.add(g);
433
- for (let i = 0; i < root.children.length; i++) {
434
- const child = root.children[i];
435
- const anchorName = isUnary ? "start" : `in${i + 1}`;
436
- if (isGateNode(child.node)) {
437
- const childElm = drawit(child, depth + 1);
438
- drawing.add(new RightLines({ at: [g, anchorName], to: childElm.anchors.end }));
439
- }
440
- }
441
- return g;
442
- }
443
- drawit(dtree, 0, outlabel);
444
- return drawing;
445
- }
446
- // ---------------------------------------------------------------------------
447
- // Public API
448
- // ---------------------------------------------------------------------------
449
- export function logicparse(expr, opts = {}) {
450
- const { gateW = 2, gateH = 0.75, outlabel } = opts;
451
- const tokens = tokenize(expr);
452
- const parsed = new Parser(tokens).parse();
453
- const tree = toLogicTree(parsed);
454
- return drawLogic(tree, gateH, gateW, outlabel);
455
- }
456
- //# sourceMappingURL=parsing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/subsystems/parsing.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pictorial.d.ts","sourceRoot":"","sources":["../../src/subsystems/pictorial.ts"],"names":[],"mappings":"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"}