@knowvah/dot-engine 2.3.1 → 2.4.0
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/common/arith.d.ts +12 -0
- package/dist/common/arith.d.ts.map +1 -1
- package/dist/common/edge-in-box.d.ts +31 -0
- package/dist/common/edge-in-box.d.ts.map +1 -0
- package/dist/common/htmltable-emit.d.ts +1 -1
- package/dist/common/htmltable-emit.d.ts.map +1 -1
- package/dist/common/make-label.d.ts +3 -1
- package/dist/common/make-label.d.ts.map +1 -1
- package/dist/common/poly-gencode.d.ts +12 -1
- package/dist/common/poly-gencode.d.ts.map +1 -1
- package/dist/gvc/device.d.ts.map +1 -1
- package/dist/gvc/emit-gates.d.ts +35 -0
- package/dist/gvc/emit-gates.d.ts.map +1 -0
- package/dist/gvc/job.d.ts +4 -0
- package/dist/gvc/job.d.ts.map +1 -1
- package/dist/gvc/viewport.d.ts +13 -0
- package/dist/gvc/viewport.d.ts.map +1 -1
- package/dist/index.js +813 -542
- package/dist/index.js.map +4 -4
- package/dist/layout/circo/blockpath.d.ts +1 -38
- package/dist/layout/circo/blockpath.d.ts.map +1 -1
- package/dist/layout/circo/crossings.d.ts +59 -0
- package/dist/layout/circo/crossings.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-chain.d.ts +5 -3
- package/dist/layout/dot/edge-route-chain.d.ts.map +1 -1
- package/dist/layout/dot/edge-route.d.ts.map +1 -1
- package/dist/layout/dot/index.d.ts +10 -2
- package/dist/layout/dot/index.d.ts.map +1 -1
- package/dist/layout/dot/ortho-adapter.d.ts +6 -2
- package/dist/layout/dot/ortho-adapter.d.ts.map +1 -1
- package/dist/layout/dot/pack-components.d.ts +4 -1
- package/dist/layout/dot/pack-components.d.ts.map +1 -1
- package/dist/layout/dot/splines-flat-multi.d.ts +4 -4
- package/dist/layout/dot/splines-flat.d.ts +1 -11
- package/dist/layout/dot/splines-flat.d.ts.map +1 -1
- package/dist/layout/dot/splines-route.d.ts.map +1 -1
- package/dist/layout/neato/constraint-adjust.d.ts +32 -0
- package/dist/layout/neato/constraint-adjust.d.ts.map +1 -1
- package/dist/layout/neato/multispline.d.ts.map +1 -1
- package/dist/layout/neato/splines.d.ts.map +1 -1
- package/dist/layout/pack/poly-place.d.ts.map +1 -1
- package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts +23 -0
- package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-driver.d.ts +6 -0
- package/dist/layout/sfdp/spring-driver.d.ts.map +1 -1
- package/dist/ortho/index.d.ts +4 -1
- package/dist/ortho/index.d.ts.map +1 -1
- package/dist/ortho/maze.d.ts +5 -2
- package/dist/ortho/maze.d.ts.map +1 -1
- package/dist/ortho/partition.d.ts +8 -1
- package/dist/ortho/partition.d.ts.map +1 -1
- package/dist/ortho/trap-segment.d.ts +2 -1
- package/dist/ortho/trap-segment.d.ts.map +1 -1
- package/dist/ortho/trapezoid.d.ts.map +1 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/number-scan.d.ts +31 -0
- package/dist/parser/number-scan.d.ts.map +1 -0
- package/dist/render/dot/edge-draw.d.ts +12 -0
- package/dist/render/dot/edge-draw.d.ts.map +1 -1
- package/dist/render/svg-graph.d.ts +6 -5
- package/dist/render/svg-graph.d.ts.map +1 -1
- package/dist/render/svg.d.ts +2 -21
- package/dist/render/svg.d.ts.map +1 -1
- package/dist/render.js +813 -542
- package/dist/render.js.map +4 -4
- package/dist/xdot/parse.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/common/arith.ts +25 -0
- package/src/common/edge-in-box.ts +54 -0
- package/src/common/graph-init.ts +3 -3
- package/src/common/htmltable-emit.ts +4 -2
- package/src/common/make-label.ts +3 -1
- package/src/common/poly-gencode.ts +18 -4
- package/src/gvc/device.ts +8 -41
- package/src/gvc/edge-labels.ts +30 -13
- package/src/gvc/emit-gates.ts +89 -0
- package/src/gvc/job.ts +4 -0
- package/src/gvc/viewport.ts +29 -0
- package/src/layout/circo/blockpath.ts +6 -125
- package/src/layout/circo/crossings.ts +171 -0
- package/src/layout/dot/__fixtures__/2784.dot +1 -0
- package/src/layout/dot/__fixtures__/2784.native-16.1.svg +48 -0
- package/src/layout/dot/edge-route-chain.ts +11 -5
- package/src/layout/dot/edge-route.ts +2 -1
- package/src/layout/dot/index.ts +14 -4
- package/src/layout/dot/ortho-adapter.ts +7 -3
- package/src/layout/dot/pack-components.ts +11 -4
- package/src/layout/dot/splines-flat-multi.ts +4 -4
- package/src/layout/dot/splines-flat.ts +5 -32
- package/src/layout/dot/splines-route.ts +10 -2
- package/src/layout/dot/splines.ts +6 -6
- package/src/layout/neato/constraint-adjust.ts +10 -4
- package/src/layout/neato/multispline.ts +26 -9
- package/src/layout/neato/splines.ts +7 -7
- package/src/layout/pack/poly-place.ts +9 -2
- package/src/layout/sfdp/__fixtures__/pcp-rotate-native.ts +94 -0
- package/src/layout/sfdp/spring-driver.ts +45 -13
- package/src/ortho/index.ts +22 -13
- package/src/ortho/maze.ts +8 -2
- package/src/ortho/partition.ts +17 -2
- package/src/ortho/trap-segment.ts +47 -24
- package/src/ortho/trapezoid.ts +24 -15
- package/src/parser/dot.js +334 -343
- package/src/parser/dot.pegjs +19 -5
- package/src/parser/index.ts +15 -0
- package/src/parser/number-scan.ts +118 -0
- package/src/render/dot/edge-draw.ts +25 -0
- package/src/render/svg-graph.ts +77 -47
- package/src/render/svg-helpers.ts +2 -2
- package/src/render/svg.ts +4 -41
- package/src/xdot/parse.ts +19 -5
package/dist/index.js
CHANGED
|
@@ -110,9 +110,9 @@ function peg$parse(input, options) {
|
|
|
110
110
|
const peg$c0 = "{";
|
|
111
111
|
const peg$c1 = "}";
|
|
112
112
|
const peg$c2 = ";";
|
|
113
|
-
const peg$c3 = "
|
|
114
|
-
const peg$c4 = "
|
|
115
|
-
const peg$c5 = "
|
|
113
|
+
const peg$c3 = "=";
|
|
114
|
+
const peg$c4 = "[";
|
|
115
|
+
const peg$c5 = "]";
|
|
116
116
|
const peg$c6 = ":";
|
|
117
117
|
const peg$c7 = "->";
|
|
118
118
|
const peg$c8 = "--";
|
|
@@ -136,32 +136,30 @@ function peg$parse(input, options) {
|
|
|
136
136
|
const peg$r3 = /^[A-Za-z_\x80-\uFFFF]/;
|
|
137
137
|
const peg$r4 = /^[A-Za-z_0-9\x80-\uFFFF]/;
|
|
138
138
|
const peg$r5 = /^[0-9]/;
|
|
139
|
-
const peg$r6 = /^[
|
|
140
|
-
const peg$r7 = /^[
|
|
141
|
-
const peg$r8 = /^[
|
|
142
|
-
const peg$r9 = /^[
|
|
143
|
-
const peg$r10 = /^[
|
|
144
|
-
const peg$r11 = /^[
|
|
145
|
-
const peg$r12 = /^[
|
|
146
|
-
const peg$r13 = /^[
|
|
147
|
-
const peg$r14 = /^[
|
|
148
|
-
const peg$r15 = /^[
|
|
149
|
-
const peg$r16 = /^[
|
|
150
|
-
const peg$r17 = /^[
|
|
151
|
-
const peg$r18 = /^[
|
|
152
|
-
const peg$r19 = /^[
|
|
153
|
-
const peg$r20 = /^[
|
|
154
|
-
const peg$r21 = /^[
|
|
155
|
-
const peg$r22 = /^[
|
|
156
|
-
const peg$r23 = /^[ \t\r\n]/;
|
|
157
|
-
const peg$r24 = /^[^\n]/;
|
|
139
|
+
const peg$r6 = /^[Ss]/;
|
|
140
|
+
const peg$r7 = /^[Tt]/;
|
|
141
|
+
const peg$r8 = /^[Rr]/;
|
|
142
|
+
const peg$r9 = /^[Ii]/;
|
|
143
|
+
const peg$r10 = /^[Cc]/;
|
|
144
|
+
const peg$r11 = /^[Gg]/;
|
|
145
|
+
const peg$r12 = /^[Aa]/;
|
|
146
|
+
const peg$r13 = /^[Pp]/;
|
|
147
|
+
const peg$r14 = /^[Hh]/;
|
|
148
|
+
const peg$r15 = /^[Dd]/;
|
|
149
|
+
const peg$r16 = /^[Nn]/;
|
|
150
|
+
const peg$r17 = /^[Oo]/;
|
|
151
|
+
const peg$r18 = /^[Ee]/;
|
|
152
|
+
const peg$r19 = /^[Uu]/;
|
|
153
|
+
const peg$r20 = /^[Bb]/;
|
|
154
|
+
const peg$r21 = /^[ \t\r\n]/;
|
|
155
|
+
const peg$r22 = /^[^\n]/;
|
|
158
156
|
const peg$e0 = peg$literalExpectation("{", false);
|
|
159
157
|
const peg$e1 = peg$literalExpectation("}", false);
|
|
160
158
|
const peg$e2 = peg$literalExpectation(";", false);
|
|
161
|
-
const peg$e3 = peg$literalExpectation("
|
|
162
|
-
const peg$e4 = peg$literalExpectation("
|
|
163
|
-
const peg$e5 = peg$
|
|
164
|
-
const peg$e6 = peg$
|
|
159
|
+
const peg$e3 = peg$literalExpectation("=", false);
|
|
160
|
+
const peg$e4 = peg$literalExpectation("[", false);
|
|
161
|
+
const peg$e5 = peg$literalExpectation("]", false);
|
|
162
|
+
const peg$e6 = peg$classExpectation([";", ","], false, false, false);
|
|
165
163
|
const peg$e7 = peg$literalExpectation(":", false);
|
|
166
164
|
const peg$e8 = peg$otherExpectation("edge operator");
|
|
167
165
|
const peg$e9 = peg$literalExpectation("->", false);
|
|
@@ -181,30 +179,28 @@ function peg$parse(input, options) {
|
|
|
181
179
|
const peg$e23 = peg$literalExpectation("-", false);
|
|
182
180
|
const peg$e24 = peg$classExpectation([["0", "9"]], false, false, false);
|
|
183
181
|
const peg$e25 = peg$literalExpectation(".", false);
|
|
184
|
-
const peg$e26 = peg$classExpectation(["
|
|
185
|
-
const peg$e27 = peg$classExpectation(["
|
|
186
|
-
const peg$e28 = peg$classExpectation(["
|
|
187
|
-
const peg$e29 = peg$classExpectation(["
|
|
188
|
-
const peg$e30 = peg$classExpectation(["
|
|
189
|
-
const peg$e31 = peg$classExpectation(["
|
|
190
|
-
const peg$e32 = peg$classExpectation(["
|
|
191
|
-
const peg$e33 = peg$classExpectation(["
|
|
192
|
-
const peg$e34 = peg$classExpectation(["
|
|
193
|
-
const peg$e35 = peg$classExpectation(["
|
|
194
|
-
const peg$e36 = peg$classExpectation(["
|
|
195
|
-
const peg$e37 = peg$classExpectation(["
|
|
196
|
-
const peg$e38 = peg$classExpectation(["
|
|
197
|
-
const peg$e39 = peg$classExpectation(["
|
|
198
|
-
const peg$e40 = peg$classExpectation(["
|
|
199
|
-
const peg$e41 = peg$classExpectation(["
|
|
200
|
-
const peg$e42 = peg$
|
|
201
|
-
const peg$e43 = peg$
|
|
202
|
-
const peg$e44 = peg$literalExpectation("
|
|
203
|
-
const peg$e45 = peg$
|
|
204
|
-
const peg$e46 = peg$literalExpectation("
|
|
205
|
-
const peg$e47 = peg$
|
|
206
|
-
const peg$e48 = peg$literalExpectation("\n", false);
|
|
207
|
-
const peg$e49 = peg$literalExpectation("#", false);
|
|
182
|
+
const peg$e26 = peg$classExpectation(["S", "s"], false, false, false);
|
|
183
|
+
const peg$e27 = peg$classExpectation(["T", "t"], false, false, false);
|
|
184
|
+
const peg$e28 = peg$classExpectation(["R", "r"], false, false, false);
|
|
185
|
+
const peg$e29 = peg$classExpectation(["I", "i"], false, false, false);
|
|
186
|
+
const peg$e30 = peg$classExpectation(["C", "c"], false, false, false);
|
|
187
|
+
const peg$e31 = peg$classExpectation(["G", "g"], false, false, false);
|
|
188
|
+
const peg$e32 = peg$classExpectation(["A", "a"], false, false, false);
|
|
189
|
+
const peg$e33 = peg$classExpectation(["P", "p"], false, false, false);
|
|
190
|
+
const peg$e34 = peg$classExpectation(["H", "h"], false, false, false);
|
|
191
|
+
const peg$e35 = peg$classExpectation(["D", "d"], false, false, false);
|
|
192
|
+
const peg$e36 = peg$classExpectation(["N", "n"], false, false, false);
|
|
193
|
+
const peg$e37 = peg$classExpectation(["O", "o"], false, false, false);
|
|
194
|
+
const peg$e38 = peg$classExpectation(["E", "e"], false, false, false);
|
|
195
|
+
const peg$e39 = peg$classExpectation(["U", "u"], false, false, false);
|
|
196
|
+
const peg$e40 = peg$classExpectation(["B", "b"], false, false, false);
|
|
197
|
+
const peg$e41 = peg$classExpectation([" ", " ", "\r", "\n"], false, false, false);
|
|
198
|
+
const peg$e42 = peg$literalExpectation("/*", false);
|
|
199
|
+
const peg$e43 = peg$literalExpectation("*/", false);
|
|
200
|
+
const peg$e44 = peg$literalExpectation("//", false);
|
|
201
|
+
const peg$e45 = peg$classExpectation(["\n"], true, false, false);
|
|
202
|
+
const peg$e46 = peg$literalExpectation("\n", false);
|
|
203
|
+
const peg$e47 = peg$literalExpectation("#", false);
|
|
208
204
|
function peg$f0(s, t, id, stmts) {
|
|
209
205
|
return {
|
|
210
206
|
type: "graph",
|
|
@@ -247,37 +243,44 @@ function peg$parse(input, options) {
|
|
|
247
243
|
function peg$f11(s) {
|
|
248
244
|
return s;
|
|
249
245
|
}
|
|
250
|
-
function peg$f12(t, attrs) {
|
|
246
|
+
function peg$f12(t, m, attrs) {
|
|
247
|
+
if (m) console.error("Warning: attribute macros not implemented");
|
|
251
248
|
return { type: "attr", target: t, attrs };
|
|
252
249
|
}
|
|
253
250
|
function peg$f13(a) {
|
|
254
251
|
return { type: "assign", key: a.key, value: a.value };
|
|
255
252
|
}
|
|
256
253
|
function peg$f14() {
|
|
257
|
-
return
|
|
254
|
+
return true;
|
|
258
255
|
}
|
|
259
256
|
function peg$f15() {
|
|
260
|
-
return
|
|
257
|
+
return false;
|
|
261
258
|
}
|
|
262
259
|
function peg$f16() {
|
|
260
|
+
return "graph";
|
|
261
|
+
}
|
|
262
|
+
function peg$f17() {
|
|
263
|
+
return "node";
|
|
264
|
+
}
|
|
265
|
+
function peg$f18() {
|
|
263
266
|
return "edge";
|
|
264
267
|
}
|
|
265
|
-
function peg$
|
|
268
|
+
function peg$f19(defs, rest) {
|
|
266
269
|
return defs.concat(rest);
|
|
267
270
|
}
|
|
268
|
-
function peg$
|
|
271
|
+
function peg$f20() {
|
|
269
272
|
return [];
|
|
270
273
|
}
|
|
271
|
-
function peg$
|
|
274
|
+
function peg$f21(a) {
|
|
272
275
|
return a;
|
|
273
276
|
}
|
|
274
|
-
function peg$
|
|
277
|
+
function peg$f22(pairs) {
|
|
275
278
|
return pairs;
|
|
276
279
|
}
|
|
277
|
-
function peg$
|
|
280
|
+
function peg$f23(k, v) {
|
|
278
281
|
return { key: k, value: v };
|
|
279
282
|
}
|
|
280
|
-
function peg$
|
|
283
|
+
function peg$f24(head, chain, attrs) {
|
|
281
284
|
if (chain.length > 0) {
|
|
282
285
|
const nodes = [head].concat(chain);
|
|
283
286
|
return { type: "edge", nodes, attrs };
|
|
@@ -288,70 +291,70 @@ function peg$parse(input, options) {
|
|
|
288
291
|
return { type: "node", id: head, attrs };
|
|
289
292
|
}
|
|
290
293
|
}
|
|
291
|
-
function peg$
|
|
294
|
+
function peg$f25(s) {
|
|
292
295
|
return s;
|
|
293
296
|
}
|
|
294
|
-
function peg$
|
|
297
|
+
function peg$f26(n) {
|
|
295
298
|
return n;
|
|
296
299
|
}
|
|
297
|
-
function peg$
|
|
300
|
+
function peg$f27(id, port, compass) {
|
|
298
301
|
return { id, port, compass };
|
|
299
302
|
}
|
|
300
|
-
function peg$
|
|
303
|
+
function peg$f28(id, port) {
|
|
301
304
|
return { id, port, compass: null };
|
|
302
305
|
}
|
|
303
|
-
function peg$
|
|
306
|
+
function peg$f29(id) {
|
|
304
307
|
return { id, port: null, compass: null };
|
|
305
308
|
}
|
|
306
|
-
function peg$
|
|
309
|
+
function peg$f30(s, rest) {
|
|
307
310
|
return [s].concat(rest);
|
|
308
311
|
}
|
|
309
|
-
function peg$
|
|
312
|
+
function peg$f31() {
|
|
310
313
|
return [];
|
|
311
314
|
}
|
|
312
|
-
function peg$
|
|
315
|
+
function peg$f32(id, stmts) {
|
|
313
316
|
return { type: "subgraph", id, stmts };
|
|
314
317
|
}
|
|
315
|
-
function peg$
|
|
318
|
+
function peg$f33(stmts) {
|
|
316
319
|
return { type: "subgraph", id: null, stmts };
|
|
317
320
|
}
|
|
318
|
-
function peg$
|
|
321
|
+
function peg$f34(stmts) {
|
|
319
322
|
return { type: "subgraph", id: null, stmts };
|
|
320
323
|
}
|
|
321
|
-
function peg$
|
|
324
|
+
function peg$f35(first, s) {
|
|
322
325
|
return s;
|
|
323
326
|
}
|
|
324
|
-
function peg$
|
|
327
|
+
function peg$f36(first, rest) {
|
|
325
328
|
return rest.length > 0 ? first + rest.join("") : first;
|
|
326
329
|
}
|
|
327
|
-
function peg$
|
|
330
|
+
function peg$f37(chars) {
|
|
328
331
|
return chars.join("");
|
|
329
332
|
}
|
|
330
|
-
function peg$
|
|
333
|
+
function peg$f38() {
|
|
331
334
|
return '"';
|
|
332
335
|
}
|
|
333
|
-
function peg$
|
|
336
|
+
function peg$f39() {
|
|
334
337
|
return "";
|
|
335
338
|
}
|
|
336
|
-
function peg$
|
|
339
|
+
function peg$f40(c) {
|
|
337
340
|
return "\\" + c;
|
|
338
341
|
}
|
|
339
|
-
function peg$
|
|
342
|
+
function peg$f41(content) {
|
|
340
343
|
return "" + content;
|
|
341
344
|
}
|
|
342
|
-
function peg$
|
|
345
|
+
function peg$f42(chars) {
|
|
343
346
|
return chars.join("");
|
|
344
347
|
}
|
|
345
|
-
function peg$
|
|
348
|
+
function peg$f43(nested2, content) {
|
|
346
349
|
return "<" + content + ">";
|
|
347
350
|
}
|
|
348
|
-
function peg$
|
|
351
|
+
function peg$f44(n) {
|
|
349
352
|
return n;
|
|
350
353
|
}
|
|
351
|
-
function peg$
|
|
354
|
+
function peg$f45(first, rest) {
|
|
352
355
|
return first + rest.join("");
|
|
353
356
|
}
|
|
354
|
-
function peg$
|
|
357
|
+
function peg$f46(s) {
|
|
355
358
|
return Array.isArray(s) ? s.flat(Infinity).filter((x) => x !== null && x !== void 0).join("") : String(s);
|
|
356
359
|
}
|
|
357
360
|
let peg$currPos = options.peg$currPos | 0;
|
|
@@ -722,15 +725,21 @@ function peg$parse(input, options) {
|
|
|
722
725
|
return s0;
|
|
723
726
|
}
|
|
724
727
|
function peg$parseAttrStmt() {
|
|
725
|
-
let s0, s12, s2, s3;
|
|
728
|
+
let s0, s12, s2, s3, s4;
|
|
726
729
|
s0 = peg$currPos;
|
|
727
730
|
s12 = peg$parseAttrType();
|
|
728
731
|
if (s12 !== peg$FAILED) {
|
|
729
732
|
s2 = peg$parse_();
|
|
730
|
-
s3 = peg$
|
|
733
|
+
s3 = peg$parseOptMacroName();
|
|
731
734
|
if (s3 !== peg$FAILED) {
|
|
732
|
-
|
|
733
|
-
|
|
735
|
+
s4 = peg$parseAttrListReq();
|
|
736
|
+
if (s4 !== peg$FAILED) {
|
|
737
|
+
peg$savedPos = s0;
|
|
738
|
+
s0 = peg$f12(s12, s3, s4);
|
|
739
|
+
} else {
|
|
740
|
+
peg$currPos = s0;
|
|
741
|
+
s0 = peg$FAILED;
|
|
742
|
+
}
|
|
734
743
|
} else {
|
|
735
744
|
peg$currPos = s0;
|
|
736
745
|
s0 = peg$FAILED;
|
|
@@ -750,13 +759,49 @@ function peg$parse(input, options) {
|
|
|
750
759
|
}
|
|
751
760
|
return s0;
|
|
752
761
|
}
|
|
762
|
+
function peg$parseOptMacroName() {
|
|
763
|
+
let s0, s12, s2, s3, s4;
|
|
764
|
+
s0 = peg$currPos;
|
|
765
|
+
s12 = peg$parseAtom();
|
|
766
|
+
if (s12 !== peg$FAILED) {
|
|
767
|
+
s2 = peg$parse_();
|
|
768
|
+
if (input.charCodeAt(peg$currPos) === 61) {
|
|
769
|
+
s3 = peg$c3;
|
|
770
|
+
peg$currPos++;
|
|
771
|
+
} else {
|
|
772
|
+
s3 = peg$FAILED;
|
|
773
|
+
if (peg$silentFails === 0) {
|
|
774
|
+
peg$fail(peg$e3);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
if (s3 !== peg$FAILED) {
|
|
778
|
+
s4 = peg$parse_();
|
|
779
|
+
peg$savedPos = s0;
|
|
780
|
+
s0 = peg$f14();
|
|
781
|
+
} else {
|
|
782
|
+
peg$currPos = s0;
|
|
783
|
+
s0 = peg$FAILED;
|
|
784
|
+
}
|
|
785
|
+
} else {
|
|
786
|
+
peg$currPos = s0;
|
|
787
|
+
s0 = peg$FAILED;
|
|
788
|
+
}
|
|
789
|
+
if (s0 === peg$FAILED) {
|
|
790
|
+
s0 = peg$currPos;
|
|
791
|
+
s12 = "";
|
|
792
|
+
peg$savedPos = s0;
|
|
793
|
+
s12 = peg$f15();
|
|
794
|
+
s0 = s12;
|
|
795
|
+
}
|
|
796
|
+
return s0;
|
|
797
|
+
}
|
|
753
798
|
function peg$parseAttrType() {
|
|
754
799
|
let s0, s12;
|
|
755
800
|
s0 = peg$currPos;
|
|
756
801
|
s12 = peg$parseGraphKw();
|
|
757
802
|
if (s12 !== peg$FAILED) {
|
|
758
803
|
peg$savedPos = s0;
|
|
759
|
-
s12 = peg$
|
|
804
|
+
s12 = peg$f16();
|
|
760
805
|
}
|
|
761
806
|
s0 = s12;
|
|
762
807
|
if (s0 === peg$FAILED) {
|
|
@@ -764,7 +809,7 @@ function peg$parse(input, options) {
|
|
|
764
809
|
s12 = peg$parseNodeKw();
|
|
765
810
|
if (s12 !== peg$FAILED) {
|
|
766
811
|
peg$savedPos = s0;
|
|
767
|
-
s12 = peg$
|
|
812
|
+
s12 = peg$f17();
|
|
768
813
|
}
|
|
769
814
|
s0 = s12;
|
|
770
815
|
if (s0 === peg$FAILED) {
|
|
@@ -772,7 +817,7 @@ function peg$parse(input, options) {
|
|
|
772
817
|
s12 = peg$parseEdgeKw();
|
|
773
818
|
if (s12 !== peg$FAILED) {
|
|
774
819
|
peg$savedPos = s0;
|
|
775
|
-
s12 = peg$
|
|
820
|
+
s12 = peg$f18();
|
|
776
821
|
}
|
|
777
822
|
s0 = s12;
|
|
778
823
|
}
|
|
@@ -784,12 +829,12 @@ function peg$parse(input, options) {
|
|
|
784
829
|
s0 = peg$currPos;
|
|
785
830
|
s12 = peg$parse_();
|
|
786
831
|
if (input.charCodeAt(peg$currPos) === 91) {
|
|
787
|
-
s2 = peg$
|
|
832
|
+
s2 = peg$c4;
|
|
788
833
|
peg$currPos++;
|
|
789
834
|
} else {
|
|
790
835
|
s2 = peg$FAILED;
|
|
791
836
|
if (peg$silentFails === 0) {
|
|
792
|
-
peg$fail(peg$
|
|
837
|
+
peg$fail(peg$e4);
|
|
793
838
|
}
|
|
794
839
|
}
|
|
795
840
|
if (s2 !== peg$FAILED) {
|
|
@@ -797,19 +842,19 @@ function peg$parse(input, options) {
|
|
|
797
842
|
s4 = peg$parseAttrDefs();
|
|
798
843
|
s5 = peg$parse_();
|
|
799
844
|
if (input.charCodeAt(peg$currPos) === 93) {
|
|
800
|
-
s6 = peg$
|
|
845
|
+
s6 = peg$c5;
|
|
801
846
|
peg$currPos++;
|
|
802
847
|
} else {
|
|
803
848
|
s6 = peg$FAILED;
|
|
804
849
|
if (peg$silentFails === 0) {
|
|
805
|
-
peg$fail(peg$
|
|
850
|
+
peg$fail(peg$e5);
|
|
806
851
|
}
|
|
807
852
|
}
|
|
808
853
|
if (s6 !== peg$FAILED) {
|
|
809
854
|
s7 = peg$parseAttrList();
|
|
810
855
|
if (s7 !== peg$FAILED) {
|
|
811
856
|
peg$savedPos = s0;
|
|
812
|
-
s0 = peg$
|
|
857
|
+
s0 = peg$f19(s4, s7);
|
|
813
858
|
} else {
|
|
814
859
|
peg$currPos = s0;
|
|
815
860
|
s0 = peg$FAILED;
|
|
@@ -831,7 +876,7 @@ function peg$parse(input, options) {
|
|
|
831
876
|
s0 = peg$currPos;
|
|
832
877
|
s12 = "";
|
|
833
878
|
peg$savedPos = s0;
|
|
834
|
-
s12 = peg$
|
|
879
|
+
s12 = peg$f20();
|
|
835
880
|
s0 = s12;
|
|
836
881
|
}
|
|
837
882
|
return s0;
|
|
@@ -851,7 +896,7 @@ function peg$parse(input, options) {
|
|
|
851
896
|
} else {
|
|
852
897
|
s6 = peg$FAILED;
|
|
853
898
|
if (peg$silentFails === 0) {
|
|
854
|
-
peg$fail(peg$
|
|
899
|
+
peg$fail(peg$e6);
|
|
855
900
|
}
|
|
856
901
|
}
|
|
857
902
|
if (s6 !== peg$FAILED) {
|
|
@@ -866,7 +911,7 @@ function peg$parse(input, options) {
|
|
|
866
911
|
s5 = null;
|
|
867
912
|
}
|
|
868
913
|
peg$savedPos = s2;
|
|
869
|
-
s2 = peg$
|
|
914
|
+
s2 = peg$f21(s3);
|
|
870
915
|
} else {
|
|
871
916
|
peg$currPos = s2;
|
|
872
917
|
s2 = peg$FAILED;
|
|
@@ -884,7 +929,7 @@ function peg$parse(input, options) {
|
|
|
884
929
|
} else {
|
|
885
930
|
s6 = peg$FAILED;
|
|
886
931
|
if (peg$silentFails === 0) {
|
|
887
|
-
peg$fail(peg$
|
|
932
|
+
peg$fail(peg$e6);
|
|
888
933
|
}
|
|
889
934
|
}
|
|
890
935
|
if (s6 !== peg$FAILED) {
|
|
@@ -899,14 +944,14 @@ function peg$parse(input, options) {
|
|
|
899
944
|
s5 = null;
|
|
900
945
|
}
|
|
901
946
|
peg$savedPos = s2;
|
|
902
|
-
s2 = peg$
|
|
947
|
+
s2 = peg$f21(s3);
|
|
903
948
|
} else {
|
|
904
949
|
peg$currPos = s2;
|
|
905
950
|
s2 = peg$FAILED;
|
|
906
951
|
}
|
|
907
952
|
}
|
|
908
953
|
peg$savedPos = s0;
|
|
909
|
-
s12 = peg$
|
|
954
|
+
s12 = peg$f22(s12);
|
|
910
955
|
s0 = s12;
|
|
911
956
|
return s0;
|
|
912
957
|
}
|
|
@@ -917,12 +962,12 @@ function peg$parse(input, options) {
|
|
|
917
962
|
if (s12 !== peg$FAILED) {
|
|
918
963
|
s2 = peg$parse_();
|
|
919
964
|
if (input.charCodeAt(peg$currPos) === 61) {
|
|
920
|
-
s3 = peg$
|
|
965
|
+
s3 = peg$c3;
|
|
921
966
|
peg$currPos++;
|
|
922
967
|
} else {
|
|
923
968
|
s3 = peg$FAILED;
|
|
924
969
|
if (peg$silentFails === 0) {
|
|
925
|
-
peg$fail(peg$
|
|
970
|
+
peg$fail(peg$e3);
|
|
926
971
|
}
|
|
927
972
|
}
|
|
928
973
|
if (s3 !== peg$FAILED) {
|
|
@@ -930,7 +975,7 @@ function peg$parse(input, options) {
|
|
|
930
975
|
s5 = peg$parseAtom();
|
|
931
976
|
if (s5 !== peg$FAILED) {
|
|
932
977
|
peg$savedPos = s0;
|
|
933
|
-
s0 = peg$
|
|
978
|
+
s0 = peg$f23(s12, s5);
|
|
934
979
|
} else {
|
|
935
980
|
peg$currPos = s0;
|
|
936
981
|
s0 = peg$FAILED;
|
|
@@ -957,7 +1002,7 @@ function peg$parse(input, options) {
|
|
|
957
1002
|
s5 = peg$parseAttrList();
|
|
958
1003
|
if (s5 !== peg$FAILED) {
|
|
959
1004
|
peg$savedPos = s0;
|
|
960
|
-
s0 = peg$
|
|
1005
|
+
s0 = peg$f24(s12, s3, s5);
|
|
961
1006
|
} else {
|
|
962
1007
|
peg$currPos = s0;
|
|
963
1008
|
s0 = peg$FAILED;
|
|
@@ -978,7 +1023,7 @@ function peg$parse(input, options) {
|
|
|
978
1023
|
s12 = peg$parseSubgraph();
|
|
979
1024
|
if (s12 !== peg$FAILED) {
|
|
980
1025
|
peg$savedPos = s0;
|
|
981
|
-
s12 = peg$
|
|
1026
|
+
s12 = peg$f25(s12);
|
|
982
1027
|
}
|
|
983
1028
|
s0 = s12;
|
|
984
1029
|
if (s0 === peg$FAILED) {
|
|
@@ -986,7 +1031,7 @@ function peg$parse(input, options) {
|
|
|
986
1031
|
s12 = peg$parseNode();
|
|
987
1032
|
if (s12 !== peg$FAILED) {
|
|
988
1033
|
peg$savedPos = s0;
|
|
989
|
-
s12 = peg$
|
|
1034
|
+
s12 = peg$f26(s12);
|
|
990
1035
|
}
|
|
991
1036
|
s0 = s12;
|
|
992
1037
|
}
|
|
@@ -1026,7 +1071,7 @@ function peg$parse(input, options) {
|
|
|
1026
1071
|
s9 = peg$parseAtom();
|
|
1027
1072
|
if (s9 !== peg$FAILED) {
|
|
1028
1073
|
peg$savedPos = s0;
|
|
1029
|
-
s0 = peg$
|
|
1074
|
+
s0 = peg$f27(s12, s5, s9);
|
|
1030
1075
|
} else {
|
|
1031
1076
|
peg$currPos = s0;
|
|
1032
1077
|
s0 = peg$FAILED;
|
|
@@ -1066,7 +1111,7 @@ function peg$parse(input, options) {
|
|
|
1066
1111
|
s5 = peg$parseAtom();
|
|
1067
1112
|
if (s5 !== peg$FAILED) {
|
|
1068
1113
|
peg$savedPos = s0;
|
|
1069
|
-
s0 = peg$
|
|
1114
|
+
s0 = peg$f28(s12, s5);
|
|
1070
1115
|
} else {
|
|
1071
1116
|
peg$currPos = s0;
|
|
1072
1117
|
s0 = peg$FAILED;
|
|
@@ -1084,7 +1129,7 @@ function peg$parse(input, options) {
|
|
|
1084
1129
|
s12 = peg$parseAtom();
|
|
1085
1130
|
if (s12 !== peg$FAILED) {
|
|
1086
1131
|
peg$savedPos = s0;
|
|
1087
|
-
s12 = peg$
|
|
1132
|
+
s12 = peg$f29(s12);
|
|
1088
1133
|
}
|
|
1089
1134
|
s0 = s12;
|
|
1090
1135
|
}
|
|
@@ -1103,7 +1148,7 @@ function peg$parse(input, options) {
|
|
|
1103
1148
|
s5 = peg$parseEdgeChain();
|
|
1104
1149
|
if (s5 !== peg$FAILED) {
|
|
1105
1150
|
peg$savedPos = s0;
|
|
1106
|
-
s0 = peg$
|
|
1151
|
+
s0 = peg$f30(s3, s5);
|
|
1107
1152
|
} else {
|
|
1108
1153
|
peg$currPos = s0;
|
|
1109
1154
|
s0 = peg$FAILED;
|
|
@@ -1120,7 +1165,7 @@ function peg$parse(input, options) {
|
|
|
1120
1165
|
s0 = peg$currPos;
|
|
1121
1166
|
s12 = "";
|
|
1122
1167
|
peg$savedPos = s0;
|
|
1123
|
-
s12 = peg$
|
|
1168
|
+
s12 = peg$f31();
|
|
1124
1169
|
s0 = s12;
|
|
1125
1170
|
}
|
|
1126
1171
|
return s0;
|
|
@@ -1191,7 +1236,7 @@ function peg$parse(input, options) {
|
|
|
1191
1236
|
}
|
|
1192
1237
|
if (s9 !== peg$FAILED) {
|
|
1193
1238
|
peg$savedPos = s0;
|
|
1194
|
-
s0 = peg$
|
|
1239
|
+
s0 = peg$f32(s3, s7);
|
|
1195
1240
|
} else {
|
|
1196
1241
|
peg$currPos = s0;
|
|
1197
1242
|
s0 = peg$FAILED;
|
|
@@ -1242,7 +1287,7 @@ function peg$parse(input, options) {
|
|
|
1242
1287
|
}
|
|
1243
1288
|
if (s7 !== peg$FAILED) {
|
|
1244
1289
|
peg$savedPos = s0;
|
|
1245
|
-
s0 = peg$
|
|
1290
|
+
s0 = peg$f33(s5);
|
|
1246
1291
|
} else {
|
|
1247
1292
|
peg$currPos = s0;
|
|
1248
1293
|
s0 = peg$FAILED;
|
|
@@ -1286,7 +1331,7 @@ function peg$parse(input, options) {
|
|
|
1286
1331
|
}
|
|
1287
1332
|
if (s5 !== peg$FAILED) {
|
|
1288
1333
|
peg$savedPos = s0;
|
|
1289
|
-
s0 = peg$
|
|
1334
|
+
s0 = peg$f34(s3);
|
|
1290
1335
|
} else {
|
|
1291
1336
|
peg$currPos = s0;
|
|
1292
1337
|
s0 = peg$FAILED;
|
|
@@ -1325,7 +1370,7 @@ function peg$parse(input, options) {
|
|
|
1325
1370
|
s7 = peg$parseQAtom();
|
|
1326
1371
|
if (s7 !== peg$FAILED) {
|
|
1327
1372
|
peg$savedPos = s3;
|
|
1328
|
-
s3 = peg$
|
|
1373
|
+
s3 = peg$f35(s12, s7);
|
|
1329
1374
|
} else {
|
|
1330
1375
|
peg$currPos = s3;
|
|
1331
1376
|
s3 = peg$FAILED;
|
|
@@ -1352,7 +1397,7 @@ function peg$parse(input, options) {
|
|
|
1352
1397
|
s7 = peg$parseQAtom();
|
|
1353
1398
|
if (s7 !== peg$FAILED) {
|
|
1354
1399
|
peg$savedPos = s3;
|
|
1355
|
-
s3 = peg$
|
|
1400
|
+
s3 = peg$f35(s12, s7);
|
|
1356
1401
|
} else {
|
|
1357
1402
|
peg$currPos = s3;
|
|
1358
1403
|
s3 = peg$FAILED;
|
|
@@ -1363,7 +1408,7 @@ function peg$parse(input, options) {
|
|
|
1363
1408
|
}
|
|
1364
1409
|
}
|
|
1365
1410
|
peg$savedPos = s0;
|
|
1366
|
-
s0 = peg$
|
|
1411
|
+
s0 = peg$f36(s12, s2);
|
|
1367
1412
|
} else {
|
|
1368
1413
|
peg$currPos = s0;
|
|
1369
1414
|
s0 = peg$FAILED;
|
|
@@ -1411,7 +1456,7 @@ function peg$parse(input, options) {
|
|
|
1411
1456
|
}
|
|
1412
1457
|
if (s3 !== peg$FAILED) {
|
|
1413
1458
|
peg$savedPos = s0;
|
|
1414
|
-
s0 = peg$
|
|
1459
|
+
s0 = peg$f37(s2);
|
|
1415
1460
|
} else {
|
|
1416
1461
|
peg$currPos = s0;
|
|
1417
1462
|
s0 = peg$FAILED;
|
|
@@ -1436,7 +1481,7 @@ function peg$parse(input, options) {
|
|
|
1436
1481
|
}
|
|
1437
1482
|
if (s12 !== peg$FAILED) {
|
|
1438
1483
|
peg$savedPos = s0;
|
|
1439
|
-
s12 = peg$
|
|
1484
|
+
s12 = peg$f38();
|
|
1440
1485
|
}
|
|
1441
1486
|
s0 = s12;
|
|
1442
1487
|
if (s0 === peg$FAILED) {
|
|
@@ -1452,7 +1497,7 @@ function peg$parse(input, options) {
|
|
|
1452
1497
|
}
|
|
1453
1498
|
if (s12 !== peg$FAILED) {
|
|
1454
1499
|
peg$savedPos = s0;
|
|
1455
|
-
s12 = peg$
|
|
1500
|
+
s12 = peg$f39();
|
|
1456
1501
|
}
|
|
1457
1502
|
s0 = s12;
|
|
1458
1503
|
if (s0 === peg$FAILED) {
|
|
@@ -1478,7 +1523,7 @@ function peg$parse(input, options) {
|
|
|
1478
1523
|
}
|
|
1479
1524
|
if (s2 !== peg$FAILED) {
|
|
1480
1525
|
peg$savedPos = s0;
|
|
1481
|
-
s0 = peg$
|
|
1526
|
+
s0 = peg$f40(s2);
|
|
1482
1527
|
} else {
|
|
1483
1528
|
peg$currPos = s0;
|
|
1484
1529
|
s0 = peg$FAILED;
|
|
@@ -1527,7 +1572,7 @@ function peg$parse(input, options) {
|
|
|
1527
1572
|
}
|
|
1528
1573
|
if (s3 !== peg$FAILED) {
|
|
1529
1574
|
peg$savedPos = s0;
|
|
1530
|
-
s0 = peg$
|
|
1575
|
+
s0 = peg$f41(s2);
|
|
1531
1576
|
} else {
|
|
1532
1577
|
peg$currPos = s0;
|
|
1533
1578
|
s0 = peg$FAILED;
|
|
@@ -1548,7 +1593,7 @@ function peg$parse(input, options) {
|
|
|
1548
1593
|
s2 = peg$parseHtmlChar();
|
|
1549
1594
|
}
|
|
1550
1595
|
peg$savedPos = s0;
|
|
1551
|
-
s12 = peg$
|
|
1596
|
+
s12 = peg$f42(s12);
|
|
1552
1597
|
s0 = s12;
|
|
1553
1598
|
return s0;
|
|
1554
1599
|
}
|
|
@@ -1578,7 +1623,7 @@ function peg$parse(input, options) {
|
|
|
1578
1623
|
}
|
|
1579
1624
|
if (s3 !== peg$FAILED) {
|
|
1580
1625
|
peg$savedPos = s0;
|
|
1581
|
-
s0 = peg$
|
|
1626
|
+
s0 = peg$f43(s12, s2);
|
|
1582
1627
|
} else {
|
|
1583
1628
|
peg$currPos = s0;
|
|
1584
1629
|
s0 = peg$FAILED;
|
|
@@ -1623,7 +1668,7 @@ function peg$parse(input, options) {
|
|
|
1623
1668
|
s2 = peg$parseName();
|
|
1624
1669
|
if (s2 !== peg$FAILED) {
|
|
1625
1670
|
peg$savedPos = s0;
|
|
1626
|
-
s0 = peg$
|
|
1671
|
+
s0 = peg$f44(s2);
|
|
1627
1672
|
} else {
|
|
1628
1673
|
peg$currPos = s0;
|
|
1629
1674
|
s0 = peg$FAILED;
|
|
@@ -1671,7 +1716,7 @@ function peg$parse(input, options) {
|
|
|
1671
1716
|
}
|
|
1672
1717
|
}
|
|
1673
1718
|
peg$savedPos = s0;
|
|
1674
|
-
s0 = peg$
|
|
1719
|
+
s0 = peg$f45(s12, s2);
|
|
1675
1720
|
} else {
|
|
1676
1721
|
peg$currPos = s0;
|
|
1677
1722
|
s0 = peg$FAILED;
|
|
@@ -1821,70 +1866,7 @@ function peg$parse(input, options) {
|
|
|
1821
1866
|
}
|
|
1822
1867
|
}
|
|
1823
1868
|
if (s3 !== peg$FAILED) {
|
|
1824
|
-
|
|
1825
|
-
s5 = input.charAt(peg$currPos);
|
|
1826
|
-
if (peg$r6.test(s5)) {
|
|
1827
|
-
peg$currPos++;
|
|
1828
|
-
} else {
|
|
1829
|
-
s5 = peg$FAILED;
|
|
1830
|
-
if (peg$silentFails === 0) {
|
|
1831
|
-
peg$fail(peg$e26);
|
|
1832
|
-
}
|
|
1833
|
-
}
|
|
1834
|
-
if (s5 !== peg$FAILED) {
|
|
1835
|
-
s6 = input.charAt(peg$currPos);
|
|
1836
|
-
if (peg$r7.test(s6)) {
|
|
1837
|
-
peg$currPos++;
|
|
1838
|
-
} else {
|
|
1839
|
-
s6 = peg$FAILED;
|
|
1840
|
-
if (peg$silentFails === 0) {
|
|
1841
|
-
peg$fail(peg$e27);
|
|
1842
|
-
}
|
|
1843
|
-
}
|
|
1844
|
-
if (s6 === peg$FAILED) {
|
|
1845
|
-
s6 = null;
|
|
1846
|
-
}
|
|
1847
|
-
s7 = [];
|
|
1848
|
-
s8 = input.charAt(peg$currPos);
|
|
1849
|
-
if (peg$r5.test(s8)) {
|
|
1850
|
-
peg$currPos++;
|
|
1851
|
-
} else {
|
|
1852
|
-
s8 = peg$FAILED;
|
|
1853
|
-
if (peg$silentFails === 0) {
|
|
1854
|
-
peg$fail(peg$e24);
|
|
1855
|
-
}
|
|
1856
|
-
}
|
|
1857
|
-
if (s8 !== peg$FAILED) {
|
|
1858
|
-
while (s8 !== peg$FAILED) {
|
|
1859
|
-
s7.push(s8);
|
|
1860
|
-
s8 = input.charAt(peg$currPos);
|
|
1861
|
-
if (peg$r5.test(s8)) {
|
|
1862
|
-
peg$currPos++;
|
|
1863
|
-
} else {
|
|
1864
|
-
s8 = peg$FAILED;
|
|
1865
|
-
if (peg$silentFails === 0) {
|
|
1866
|
-
peg$fail(peg$e24);
|
|
1867
|
-
}
|
|
1868
|
-
}
|
|
1869
|
-
}
|
|
1870
|
-
} else {
|
|
1871
|
-
s7 = peg$FAILED;
|
|
1872
|
-
}
|
|
1873
|
-
if (s7 !== peg$FAILED) {
|
|
1874
|
-
s5 = [s5, s6, s7];
|
|
1875
|
-
s4 = s5;
|
|
1876
|
-
} else {
|
|
1877
|
-
peg$currPos = s4;
|
|
1878
|
-
s4 = peg$FAILED;
|
|
1879
|
-
}
|
|
1880
|
-
} else {
|
|
1881
|
-
peg$currPos = s4;
|
|
1882
|
-
s4 = peg$FAILED;
|
|
1883
|
-
}
|
|
1884
|
-
if (s4 === peg$FAILED) {
|
|
1885
|
-
s4 = null;
|
|
1886
|
-
}
|
|
1887
|
-
s2 = [s2, s3, s4];
|
|
1869
|
+
s2 = [s2, s3];
|
|
1888
1870
|
s12 = s2;
|
|
1889
1871
|
} else {
|
|
1890
1872
|
peg$currPos = s12;
|
|
@@ -1892,7 +1874,7 @@ function peg$parse(input, options) {
|
|
|
1892
1874
|
}
|
|
1893
1875
|
if (s12 !== peg$FAILED) {
|
|
1894
1876
|
peg$savedPos = s0;
|
|
1895
|
-
s12 = peg$
|
|
1877
|
+
s12 = peg$f46(s12);
|
|
1896
1878
|
}
|
|
1897
1879
|
s0 = s12;
|
|
1898
1880
|
return s0;
|
|
@@ -1901,62 +1883,62 @@ function peg$parse(input, options) {
|
|
|
1901
1883
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8;
|
|
1902
1884
|
s0 = peg$currPos;
|
|
1903
1885
|
s12 = input.charAt(peg$currPos);
|
|
1904
|
-
if (peg$
|
|
1886
|
+
if (peg$r6.test(s12)) {
|
|
1905
1887
|
peg$currPos++;
|
|
1906
1888
|
} else {
|
|
1907
1889
|
s12 = peg$FAILED;
|
|
1908
1890
|
if (peg$silentFails === 0) {
|
|
1909
|
-
peg$fail(peg$
|
|
1891
|
+
peg$fail(peg$e26);
|
|
1910
1892
|
}
|
|
1911
1893
|
}
|
|
1912
1894
|
if (s12 !== peg$FAILED) {
|
|
1913
1895
|
s2 = input.charAt(peg$currPos);
|
|
1914
|
-
if (peg$
|
|
1896
|
+
if (peg$r7.test(s2)) {
|
|
1915
1897
|
peg$currPos++;
|
|
1916
1898
|
} else {
|
|
1917
1899
|
s2 = peg$FAILED;
|
|
1918
1900
|
if (peg$silentFails === 0) {
|
|
1919
|
-
peg$fail(peg$
|
|
1901
|
+
peg$fail(peg$e27);
|
|
1920
1902
|
}
|
|
1921
1903
|
}
|
|
1922
1904
|
if (s2 !== peg$FAILED) {
|
|
1923
1905
|
s3 = input.charAt(peg$currPos);
|
|
1924
|
-
if (peg$
|
|
1906
|
+
if (peg$r8.test(s3)) {
|
|
1925
1907
|
peg$currPos++;
|
|
1926
1908
|
} else {
|
|
1927
1909
|
s3 = peg$FAILED;
|
|
1928
1910
|
if (peg$silentFails === 0) {
|
|
1929
|
-
peg$fail(peg$
|
|
1911
|
+
peg$fail(peg$e28);
|
|
1930
1912
|
}
|
|
1931
1913
|
}
|
|
1932
1914
|
if (s3 !== peg$FAILED) {
|
|
1933
1915
|
s4 = input.charAt(peg$currPos);
|
|
1934
|
-
if (peg$
|
|
1916
|
+
if (peg$r9.test(s4)) {
|
|
1935
1917
|
peg$currPos++;
|
|
1936
1918
|
} else {
|
|
1937
1919
|
s4 = peg$FAILED;
|
|
1938
1920
|
if (peg$silentFails === 0) {
|
|
1939
|
-
peg$fail(peg$
|
|
1921
|
+
peg$fail(peg$e29);
|
|
1940
1922
|
}
|
|
1941
1923
|
}
|
|
1942
1924
|
if (s4 !== peg$FAILED) {
|
|
1943
1925
|
s5 = input.charAt(peg$currPos);
|
|
1944
|
-
if (peg$
|
|
1926
|
+
if (peg$r10.test(s5)) {
|
|
1945
1927
|
peg$currPos++;
|
|
1946
1928
|
} else {
|
|
1947
1929
|
s5 = peg$FAILED;
|
|
1948
1930
|
if (peg$silentFails === 0) {
|
|
1949
|
-
peg$fail(peg$
|
|
1931
|
+
peg$fail(peg$e30);
|
|
1950
1932
|
}
|
|
1951
1933
|
}
|
|
1952
1934
|
if (s5 !== peg$FAILED) {
|
|
1953
1935
|
s6 = input.charAt(peg$currPos);
|
|
1954
|
-
if (peg$
|
|
1936
|
+
if (peg$r7.test(s6)) {
|
|
1955
1937
|
peg$currPos++;
|
|
1956
1938
|
} else {
|
|
1957
1939
|
s6 = peg$FAILED;
|
|
1958
1940
|
if (peg$silentFails === 0) {
|
|
1959
|
-
peg$fail(peg$
|
|
1941
|
+
peg$fail(peg$e27);
|
|
1960
1942
|
}
|
|
1961
1943
|
}
|
|
1962
1944
|
if (s6 !== peg$FAILED) {
|
|
@@ -2007,52 +1989,52 @@ function peg$parse(input, options) {
|
|
|
2007
1989
|
let s0, s12, s2, s3, s4, s5, s6, s7;
|
|
2008
1990
|
s0 = peg$currPos;
|
|
2009
1991
|
s12 = input.charAt(peg$currPos);
|
|
2010
|
-
if (peg$
|
|
1992
|
+
if (peg$r11.test(s12)) {
|
|
2011
1993
|
peg$currPos++;
|
|
2012
1994
|
} else {
|
|
2013
1995
|
s12 = peg$FAILED;
|
|
2014
1996
|
if (peg$silentFails === 0) {
|
|
2015
|
-
peg$fail(peg$
|
|
1997
|
+
peg$fail(peg$e31);
|
|
2016
1998
|
}
|
|
2017
1999
|
}
|
|
2018
2000
|
if (s12 !== peg$FAILED) {
|
|
2019
2001
|
s2 = input.charAt(peg$currPos);
|
|
2020
|
-
if (peg$
|
|
2002
|
+
if (peg$r8.test(s2)) {
|
|
2021
2003
|
peg$currPos++;
|
|
2022
2004
|
} else {
|
|
2023
2005
|
s2 = peg$FAILED;
|
|
2024
2006
|
if (peg$silentFails === 0) {
|
|
2025
|
-
peg$fail(peg$
|
|
2007
|
+
peg$fail(peg$e28);
|
|
2026
2008
|
}
|
|
2027
2009
|
}
|
|
2028
2010
|
if (s2 !== peg$FAILED) {
|
|
2029
2011
|
s3 = input.charAt(peg$currPos);
|
|
2030
|
-
if (peg$
|
|
2012
|
+
if (peg$r12.test(s3)) {
|
|
2031
2013
|
peg$currPos++;
|
|
2032
2014
|
} else {
|
|
2033
2015
|
s3 = peg$FAILED;
|
|
2034
2016
|
if (peg$silentFails === 0) {
|
|
2035
|
-
peg$fail(peg$
|
|
2017
|
+
peg$fail(peg$e32);
|
|
2036
2018
|
}
|
|
2037
2019
|
}
|
|
2038
2020
|
if (s3 !== peg$FAILED) {
|
|
2039
2021
|
s4 = input.charAt(peg$currPos);
|
|
2040
|
-
if (peg$
|
|
2022
|
+
if (peg$r13.test(s4)) {
|
|
2041
2023
|
peg$currPos++;
|
|
2042
2024
|
} else {
|
|
2043
2025
|
s4 = peg$FAILED;
|
|
2044
2026
|
if (peg$silentFails === 0) {
|
|
2045
|
-
peg$fail(peg$
|
|
2027
|
+
peg$fail(peg$e33);
|
|
2046
2028
|
}
|
|
2047
2029
|
}
|
|
2048
2030
|
if (s4 !== peg$FAILED) {
|
|
2049
2031
|
s5 = input.charAt(peg$currPos);
|
|
2050
|
-
if (peg$
|
|
2032
|
+
if (peg$r14.test(s5)) {
|
|
2051
2033
|
peg$currPos++;
|
|
2052
2034
|
} else {
|
|
2053
2035
|
s5 = peg$FAILED;
|
|
2054
2036
|
if (peg$silentFails === 0) {
|
|
2055
|
-
peg$fail(peg$
|
|
2037
|
+
peg$fail(peg$e34);
|
|
2056
2038
|
}
|
|
2057
2039
|
}
|
|
2058
2040
|
if (s5 !== peg$FAILED) {
|
|
@@ -2099,72 +2081,72 @@ function peg$parse(input, options) {
|
|
|
2099
2081
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8, s9;
|
|
2100
2082
|
s0 = peg$currPos;
|
|
2101
2083
|
s12 = input.charAt(peg$currPos);
|
|
2102
|
-
if (peg$
|
|
2084
|
+
if (peg$r15.test(s12)) {
|
|
2103
2085
|
peg$currPos++;
|
|
2104
2086
|
} else {
|
|
2105
2087
|
s12 = peg$FAILED;
|
|
2106
2088
|
if (peg$silentFails === 0) {
|
|
2107
|
-
peg$fail(peg$
|
|
2089
|
+
peg$fail(peg$e35);
|
|
2108
2090
|
}
|
|
2109
2091
|
}
|
|
2110
2092
|
if (s12 !== peg$FAILED) {
|
|
2111
2093
|
s2 = input.charAt(peg$currPos);
|
|
2112
|
-
if (peg$
|
|
2094
|
+
if (peg$r9.test(s2)) {
|
|
2113
2095
|
peg$currPos++;
|
|
2114
2096
|
} else {
|
|
2115
2097
|
s2 = peg$FAILED;
|
|
2116
2098
|
if (peg$silentFails === 0) {
|
|
2117
|
-
peg$fail(peg$
|
|
2099
|
+
peg$fail(peg$e29);
|
|
2118
2100
|
}
|
|
2119
2101
|
}
|
|
2120
2102
|
if (s2 !== peg$FAILED) {
|
|
2121
2103
|
s3 = input.charAt(peg$currPos);
|
|
2122
|
-
if (peg$
|
|
2104
|
+
if (peg$r11.test(s3)) {
|
|
2123
2105
|
peg$currPos++;
|
|
2124
2106
|
} else {
|
|
2125
2107
|
s3 = peg$FAILED;
|
|
2126
2108
|
if (peg$silentFails === 0) {
|
|
2127
|
-
peg$fail(peg$
|
|
2109
|
+
peg$fail(peg$e31);
|
|
2128
2110
|
}
|
|
2129
2111
|
}
|
|
2130
2112
|
if (s3 !== peg$FAILED) {
|
|
2131
2113
|
s4 = input.charAt(peg$currPos);
|
|
2132
|
-
if (peg$
|
|
2114
|
+
if (peg$r8.test(s4)) {
|
|
2133
2115
|
peg$currPos++;
|
|
2134
2116
|
} else {
|
|
2135
2117
|
s4 = peg$FAILED;
|
|
2136
2118
|
if (peg$silentFails === 0) {
|
|
2137
|
-
peg$fail(peg$
|
|
2119
|
+
peg$fail(peg$e28);
|
|
2138
2120
|
}
|
|
2139
2121
|
}
|
|
2140
2122
|
if (s4 !== peg$FAILED) {
|
|
2141
2123
|
s5 = input.charAt(peg$currPos);
|
|
2142
|
-
if (peg$
|
|
2124
|
+
if (peg$r12.test(s5)) {
|
|
2143
2125
|
peg$currPos++;
|
|
2144
2126
|
} else {
|
|
2145
2127
|
s5 = peg$FAILED;
|
|
2146
2128
|
if (peg$silentFails === 0) {
|
|
2147
|
-
peg$fail(peg$
|
|
2129
|
+
peg$fail(peg$e32);
|
|
2148
2130
|
}
|
|
2149
2131
|
}
|
|
2150
2132
|
if (s5 !== peg$FAILED) {
|
|
2151
2133
|
s6 = input.charAt(peg$currPos);
|
|
2152
|
-
if (peg$
|
|
2134
|
+
if (peg$r13.test(s6)) {
|
|
2153
2135
|
peg$currPos++;
|
|
2154
2136
|
} else {
|
|
2155
2137
|
s6 = peg$FAILED;
|
|
2156
2138
|
if (peg$silentFails === 0) {
|
|
2157
|
-
peg$fail(peg$
|
|
2139
|
+
peg$fail(peg$e33);
|
|
2158
2140
|
}
|
|
2159
2141
|
}
|
|
2160
2142
|
if (s6 !== peg$FAILED) {
|
|
2161
2143
|
s7 = input.charAt(peg$currPos);
|
|
2162
|
-
if (peg$
|
|
2144
|
+
if (peg$r14.test(s7)) {
|
|
2163
2145
|
peg$currPos++;
|
|
2164
2146
|
} else {
|
|
2165
2147
|
s7 = peg$FAILED;
|
|
2166
2148
|
if (peg$silentFails === 0) {
|
|
2167
|
-
peg$fail(peg$
|
|
2149
|
+
peg$fail(peg$e34);
|
|
2168
2150
|
}
|
|
2169
2151
|
}
|
|
2170
2152
|
if (s7 !== peg$FAILED) {
|
|
@@ -2219,42 +2201,42 @@ function peg$parse(input, options) {
|
|
|
2219
2201
|
let s0, s12, s2, s3, s4, s5, s6;
|
|
2220
2202
|
s0 = peg$currPos;
|
|
2221
2203
|
s12 = input.charAt(peg$currPos);
|
|
2222
|
-
if (peg$
|
|
2204
|
+
if (peg$r16.test(s12)) {
|
|
2223
2205
|
peg$currPos++;
|
|
2224
2206
|
} else {
|
|
2225
2207
|
s12 = peg$FAILED;
|
|
2226
2208
|
if (peg$silentFails === 0) {
|
|
2227
|
-
peg$fail(peg$
|
|
2209
|
+
peg$fail(peg$e36);
|
|
2228
2210
|
}
|
|
2229
2211
|
}
|
|
2230
2212
|
if (s12 !== peg$FAILED) {
|
|
2231
2213
|
s2 = input.charAt(peg$currPos);
|
|
2232
|
-
if (peg$
|
|
2214
|
+
if (peg$r17.test(s2)) {
|
|
2233
2215
|
peg$currPos++;
|
|
2234
2216
|
} else {
|
|
2235
2217
|
s2 = peg$FAILED;
|
|
2236
2218
|
if (peg$silentFails === 0) {
|
|
2237
|
-
peg$fail(peg$
|
|
2219
|
+
peg$fail(peg$e37);
|
|
2238
2220
|
}
|
|
2239
2221
|
}
|
|
2240
2222
|
if (s2 !== peg$FAILED) {
|
|
2241
2223
|
s3 = input.charAt(peg$currPos);
|
|
2242
|
-
if (peg$
|
|
2224
|
+
if (peg$r15.test(s3)) {
|
|
2243
2225
|
peg$currPos++;
|
|
2244
2226
|
} else {
|
|
2245
2227
|
s3 = peg$FAILED;
|
|
2246
2228
|
if (peg$silentFails === 0) {
|
|
2247
|
-
peg$fail(peg$
|
|
2229
|
+
peg$fail(peg$e35);
|
|
2248
2230
|
}
|
|
2249
2231
|
}
|
|
2250
2232
|
if (s3 !== peg$FAILED) {
|
|
2251
2233
|
s4 = input.charAt(peg$currPos);
|
|
2252
|
-
if (peg$
|
|
2234
|
+
if (peg$r18.test(s4)) {
|
|
2253
2235
|
peg$currPos++;
|
|
2254
2236
|
} else {
|
|
2255
2237
|
s4 = peg$FAILED;
|
|
2256
2238
|
if (peg$silentFails === 0) {
|
|
2257
|
-
peg$fail(peg$
|
|
2239
|
+
peg$fail(peg$e38);
|
|
2258
2240
|
}
|
|
2259
2241
|
}
|
|
2260
2242
|
if (s4 !== peg$FAILED) {
|
|
@@ -2297,42 +2279,42 @@ function peg$parse(input, options) {
|
|
|
2297
2279
|
let s0, s12, s2, s3, s4, s5, s6;
|
|
2298
2280
|
s0 = peg$currPos;
|
|
2299
2281
|
s12 = input.charAt(peg$currPos);
|
|
2300
|
-
if (peg$
|
|
2282
|
+
if (peg$r18.test(s12)) {
|
|
2301
2283
|
peg$currPos++;
|
|
2302
2284
|
} else {
|
|
2303
2285
|
s12 = peg$FAILED;
|
|
2304
2286
|
if (peg$silentFails === 0) {
|
|
2305
|
-
peg$fail(peg$
|
|
2287
|
+
peg$fail(peg$e38);
|
|
2306
2288
|
}
|
|
2307
2289
|
}
|
|
2308
2290
|
if (s12 !== peg$FAILED) {
|
|
2309
2291
|
s2 = input.charAt(peg$currPos);
|
|
2310
|
-
if (peg$
|
|
2292
|
+
if (peg$r15.test(s2)) {
|
|
2311
2293
|
peg$currPos++;
|
|
2312
2294
|
} else {
|
|
2313
2295
|
s2 = peg$FAILED;
|
|
2314
2296
|
if (peg$silentFails === 0) {
|
|
2315
|
-
peg$fail(peg$
|
|
2297
|
+
peg$fail(peg$e35);
|
|
2316
2298
|
}
|
|
2317
2299
|
}
|
|
2318
2300
|
if (s2 !== peg$FAILED) {
|
|
2319
2301
|
s3 = input.charAt(peg$currPos);
|
|
2320
|
-
if (peg$
|
|
2302
|
+
if (peg$r11.test(s3)) {
|
|
2321
2303
|
peg$currPos++;
|
|
2322
2304
|
} else {
|
|
2323
2305
|
s3 = peg$FAILED;
|
|
2324
2306
|
if (peg$silentFails === 0) {
|
|
2325
|
-
peg$fail(peg$
|
|
2307
|
+
peg$fail(peg$e31);
|
|
2326
2308
|
}
|
|
2327
2309
|
}
|
|
2328
2310
|
if (s3 !== peg$FAILED) {
|
|
2329
2311
|
s4 = input.charAt(peg$currPos);
|
|
2330
|
-
if (peg$
|
|
2312
|
+
if (peg$r18.test(s4)) {
|
|
2331
2313
|
peg$currPos++;
|
|
2332
2314
|
} else {
|
|
2333
2315
|
s4 = peg$FAILED;
|
|
2334
2316
|
if (peg$silentFails === 0) {
|
|
2335
|
-
peg$fail(peg$
|
|
2317
|
+
peg$fail(peg$e38);
|
|
2336
2318
|
}
|
|
2337
2319
|
}
|
|
2338
2320
|
if (s4 !== peg$FAILED) {
|
|
@@ -2375,82 +2357,82 @@ function peg$parse(input, options) {
|
|
|
2375
2357
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8, s9, s10;
|
|
2376
2358
|
s0 = peg$currPos;
|
|
2377
2359
|
s12 = input.charAt(peg$currPos);
|
|
2378
|
-
if (peg$
|
|
2360
|
+
if (peg$r6.test(s12)) {
|
|
2379
2361
|
peg$currPos++;
|
|
2380
2362
|
} else {
|
|
2381
2363
|
s12 = peg$FAILED;
|
|
2382
2364
|
if (peg$silentFails === 0) {
|
|
2383
|
-
peg$fail(peg$
|
|
2365
|
+
peg$fail(peg$e26);
|
|
2384
2366
|
}
|
|
2385
2367
|
}
|
|
2386
2368
|
if (s12 !== peg$FAILED) {
|
|
2387
2369
|
s2 = input.charAt(peg$currPos);
|
|
2388
|
-
if (peg$
|
|
2370
|
+
if (peg$r19.test(s2)) {
|
|
2389
2371
|
peg$currPos++;
|
|
2390
2372
|
} else {
|
|
2391
2373
|
s2 = peg$FAILED;
|
|
2392
2374
|
if (peg$silentFails === 0) {
|
|
2393
|
-
peg$fail(peg$
|
|
2375
|
+
peg$fail(peg$e39);
|
|
2394
2376
|
}
|
|
2395
2377
|
}
|
|
2396
2378
|
if (s2 !== peg$FAILED) {
|
|
2397
2379
|
s3 = input.charAt(peg$currPos);
|
|
2398
|
-
if (peg$
|
|
2380
|
+
if (peg$r20.test(s3)) {
|
|
2399
2381
|
peg$currPos++;
|
|
2400
2382
|
} else {
|
|
2401
2383
|
s3 = peg$FAILED;
|
|
2402
2384
|
if (peg$silentFails === 0) {
|
|
2403
|
-
peg$fail(peg$
|
|
2385
|
+
peg$fail(peg$e40);
|
|
2404
2386
|
}
|
|
2405
2387
|
}
|
|
2406
2388
|
if (s3 !== peg$FAILED) {
|
|
2407
2389
|
s4 = input.charAt(peg$currPos);
|
|
2408
|
-
if (peg$
|
|
2390
|
+
if (peg$r11.test(s4)) {
|
|
2409
2391
|
peg$currPos++;
|
|
2410
2392
|
} else {
|
|
2411
2393
|
s4 = peg$FAILED;
|
|
2412
2394
|
if (peg$silentFails === 0) {
|
|
2413
|
-
peg$fail(peg$
|
|
2395
|
+
peg$fail(peg$e31);
|
|
2414
2396
|
}
|
|
2415
2397
|
}
|
|
2416
2398
|
if (s4 !== peg$FAILED) {
|
|
2417
2399
|
s5 = input.charAt(peg$currPos);
|
|
2418
|
-
if (peg$
|
|
2400
|
+
if (peg$r8.test(s5)) {
|
|
2419
2401
|
peg$currPos++;
|
|
2420
2402
|
} else {
|
|
2421
2403
|
s5 = peg$FAILED;
|
|
2422
2404
|
if (peg$silentFails === 0) {
|
|
2423
|
-
peg$fail(peg$
|
|
2405
|
+
peg$fail(peg$e28);
|
|
2424
2406
|
}
|
|
2425
2407
|
}
|
|
2426
2408
|
if (s5 !== peg$FAILED) {
|
|
2427
2409
|
s6 = input.charAt(peg$currPos);
|
|
2428
|
-
if (peg$
|
|
2410
|
+
if (peg$r12.test(s6)) {
|
|
2429
2411
|
peg$currPos++;
|
|
2430
2412
|
} else {
|
|
2431
2413
|
s6 = peg$FAILED;
|
|
2432
2414
|
if (peg$silentFails === 0) {
|
|
2433
|
-
peg$fail(peg$
|
|
2415
|
+
peg$fail(peg$e32);
|
|
2434
2416
|
}
|
|
2435
2417
|
}
|
|
2436
2418
|
if (s6 !== peg$FAILED) {
|
|
2437
2419
|
s7 = input.charAt(peg$currPos);
|
|
2438
|
-
if (peg$
|
|
2420
|
+
if (peg$r13.test(s7)) {
|
|
2439
2421
|
peg$currPos++;
|
|
2440
2422
|
} else {
|
|
2441
2423
|
s7 = peg$FAILED;
|
|
2442
2424
|
if (peg$silentFails === 0) {
|
|
2443
|
-
peg$fail(peg$
|
|
2425
|
+
peg$fail(peg$e33);
|
|
2444
2426
|
}
|
|
2445
2427
|
}
|
|
2446
2428
|
if (s7 !== peg$FAILED) {
|
|
2447
2429
|
s8 = input.charAt(peg$currPos);
|
|
2448
|
-
if (peg$
|
|
2430
|
+
if (peg$r14.test(s8)) {
|
|
2449
2431
|
peg$currPos++;
|
|
2450
2432
|
} else {
|
|
2451
2433
|
s8 = peg$FAILED;
|
|
2452
2434
|
if (peg$silentFails === 0) {
|
|
2453
|
-
peg$fail(peg$
|
|
2435
|
+
peg$fail(peg$e34);
|
|
2454
2436
|
}
|
|
2455
2437
|
}
|
|
2456
2438
|
if (s8 !== peg$FAILED) {
|
|
@@ -2523,62 +2505,62 @@ function peg$parse(input, options) {
|
|
|
2523
2505
|
s0 = peg$currPos;
|
|
2524
2506
|
s12 = peg$currPos;
|
|
2525
2507
|
s2 = input.charAt(peg$currPos);
|
|
2526
|
-
if (peg$
|
|
2508
|
+
if (peg$r6.test(s2)) {
|
|
2527
2509
|
peg$currPos++;
|
|
2528
2510
|
} else {
|
|
2529
2511
|
s2 = peg$FAILED;
|
|
2530
2512
|
if (peg$silentFails === 0) {
|
|
2531
|
-
peg$fail(peg$
|
|
2513
|
+
peg$fail(peg$e26);
|
|
2532
2514
|
}
|
|
2533
2515
|
}
|
|
2534
2516
|
if (s2 !== peg$FAILED) {
|
|
2535
2517
|
s3 = input.charAt(peg$currPos);
|
|
2536
|
-
if (peg$
|
|
2518
|
+
if (peg$r7.test(s3)) {
|
|
2537
2519
|
peg$currPos++;
|
|
2538
2520
|
} else {
|
|
2539
2521
|
s3 = peg$FAILED;
|
|
2540
2522
|
if (peg$silentFails === 0) {
|
|
2541
|
-
peg$fail(peg$
|
|
2523
|
+
peg$fail(peg$e27);
|
|
2542
2524
|
}
|
|
2543
2525
|
}
|
|
2544
2526
|
if (s3 !== peg$FAILED) {
|
|
2545
2527
|
s4 = input.charAt(peg$currPos);
|
|
2546
|
-
if (peg$
|
|
2528
|
+
if (peg$r8.test(s4)) {
|
|
2547
2529
|
peg$currPos++;
|
|
2548
2530
|
} else {
|
|
2549
2531
|
s4 = peg$FAILED;
|
|
2550
2532
|
if (peg$silentFails === 0) {
|
|
2551
|
-
peg$fail(peg$
|
|
2533
|
+
peg$fail(peg$e28);
|
|
2552
2534
|
}
|
|
2553
2535
|
}
|
|
2554
2536
|
if (s4 !== peg$FAILED) {
|
|
2555
2537
|
s5 = input.charAt(peg$currPos);
|
|
2556
|
-
if (peg$
|
|
2538
|
+
if (peg$r9.test(s5)) {
|
|
2557
2539
|
peg$currPos++;
|
|
2558
2540
|
} else {
|
|
2559
2541
|
s5 = peg$FAILED;
|
|
2560
2542
|
if (peg$silentFails === 0) {
|
|
2561
|
-
peg$fail(peg$
|
|
2543
|
+
peg$fail(peg$e29);
|
|
2562
2544
|
}
|
|
2563
2545
|
}
|
|
2564
2546
|
if (s5 !== peg$FAILED) {
|
|
2565
2547
|
s6 = input.charAt(peg$currPos);
|
|
2566
|
-
if (peg$
|
|
2548
|
+
if (peg$r10.test(s6)) {
|
|
2567
2549
|
peg$currPos++;
|
|
2568
2550
|
} else {
|
|
2569
2551
|
s6 = peg$FAILED;
|
|
2570
2552
|
if (peg$silentFails === 0) {
|
|
2571
|
-
peg$fail(peg$
|
|
2553
|
+
peg$fail(peg$e30);
|
|
2572
2554
|
}
|
|
2573
2555
|
}
|
|
2574
2556
|
if (s6 !== peg$FAILED) {
|
|
2575
2557
|
s7 = input.charAt(peg$currPos);
|
|
2576
|
-
if (peg$
|
|
2558
|
+
if (peg$r7.test(s7)) {
|
|
2577
2559
|
peg$currPos++;
|
|
2578
2560
|
} else {
|
|
2579
2561
|
s7 = peg$FAILED;
|
|
2580
2562
|
if (peg$silentFails === 0) {
|
|
2581
|
-
peg$fail(peg$
|
|
2563
|
+
peg$fail(peg$e27);
|
|
2582
2564
|
}
|
|
2583
2565
|
}
|
|
2584
2566
|
if (s7 !== peg$FAILED) {
|
|
@@ -2611,72 +2593,72 @@ function peg$parse(input, options) {
|
|
|
2611
2593
|
if (s12 === peg$FAILED) {
|
|
2612
2594
|
s12 = peg$currPos;
|
|
2613
2595
|
s2 = input.charAt(peg$currPos);
|
|
2614
|
-
if (peg$
|
|
2596
|
+
if (peg$r15.test(s2)) {
|
|
2615
2597
|
peg$currPos++;
|
|
2616
2598
|
} else {
|
|
2617
2599
|
s2 = peg$FAILED;
|
|
2618
2600
|
if (peg$silentFails === 0) {
|
|
2619
|
-
peg$fail(peg$
|
|
2601
|
+
peg$fail(peg$e35);
|
|
2620
2602
|
}
|
|
2621
2603
|
}
|
|
2622
2604
|
if (s2 !== peg$FAILED) {
|
|
2623
2605
|
s3 = input.charAt(peg$currPos);
|
|
2624
|
-
if (peg$
|
|
2606
|
+
if (peg$r9.test(s3)) {
|
|
2625
2607
|
peg$currPos++;
|
|
2626
2608
|
} else {
|
|
2627
2609
|
s3 = peg$FAILED;
|
|
2628
2610
|
if (peg$silentFails === 0) {
|
|
2629
|
-
peg$fail(peg$
|
|
2611
|
+
peg$fail(peg$e29);
|
|
2630
2612
|
}
|
|
2631
2613
|
}
|
|
2632
2614
|
if (s3 !== peg$FAILED) {
|
|
2633
2615
|
s4 = input.charAt(peg$currPos);
|
|
2634
|
-
if (peg$
|
|
2616
|
+
if (peg$r11.test(s4)) {
|
|
2635
2617
|
peg$currPos++;
|
|
2636
2618
|
} else {
|
|
2637
2619
|
s4 = peg$FAILED;
|
|
2638
2620
|
if (peg$silentFails === 0) {
|
|
2639
|
-
peg$fail(peg$
|
|
2621
|
+
peg$fail(peg$e31);
|
|
2640
2622
|
}
|
|
2641
2623
|
}
|
|
2642
2624
|
if (s4 !== peg$FAILED) {
|
|
2643
2625
|
s5 = input.charAt(peg$currPos);
|
|
2644
|
-
if (peg$
|
|
2626
|
+
if (peg$r8.test(s5)) {
|
|
2645
2627
|
peg$currPos++;
|
|
2646
2628
|
} else {
|
|
2647
2629
|
s5 = peg$FAILED;
|
|
2648
2630
|
if (peg$silentFails === 0) {
|
|
2649
|
-
peg$fail(peg$
|
|
2631
|
+
peg$fail(peg$e28);
|
|
2650
2632
|
}
|
|
2651
2633
|
}
|
|
2652
2634
|
if (s5 !== peg$FAILED) {
|
|
2653
2635
|
s6 = input.charAt(peg$currPos);
|
|
2654
|
-
if (peg$
|
|
2636
|
+
if (peg$r12.test(s6)) {
|
|
2655
2637
|
peg$currPos++;
|
|
2656
2638
|
} else {
|
|
2657
2639
|
s6 = peg$FAILED;
|
|
2658
2640
|
if (peg$silentFails === 0) {
|
|
2659
|
-
peg$fail(peg$
|
|
2641
|
+
peg$fail(peg$e32);
|
|
2660
2642
|
}
|
|
2661
2643
|
}
|
|
2662
2644
|
if (s6 !== peg$FAILED) {
|
|
2663
2645
|
s7 = input.charAt(peg$currPos);
|
|
2664
|
-
if (peg$
|
|
2646
|
+
if (peg$r13.test(s7)) {
|
|
2665
2647
|
peg$currPos++;
|
|
2666
2648
|
} else {
|
|
2667
2649
|
s7 = peg$FAILED;
|
|
2668
2650
|
if (peg$silentFails === 0) {
|
|
2669
|
-
peg$fail(peg$
|
|
2651
|
+
peg$fail(peg$e33);
|
|
2670
2652
|
}
|
|
2671
2653
|
}
|
|
2672
2654
|
if (s7 !== peg$FAILED) {
|
|
2673
2655
|
s8 = input.charAt(peg$currPos);
|
|
2674
|
-
if (peg$
|
|
2656
|
+
if (peg$r14.test(s8)) {
|
|
2675
2657
|
peg$currPos++;
|
|
2676
2658
|
} else {
|
|
2677
2659
|
s8 = peg$FAILED;
|
|
2678
2660
|
if (peg$silentFails === 0) {
|
|
2679
|
-
peg$fail(peg$
|
|
2661
|
+
peg$fail(peg$e34);
|
|
2680
2662
|
}
|
|
2681
2663
|
}
|
|
2682
2664
|
if (s8 !== peg$FAILED) {
|
|
@@ -2713,52 +2695,52 @@ function peg$parse(input, options) {
|
|
|
2713
2695
|
if (s12 === peg$FAILED) {
|
|
2714
2696
|
s12 = peg$currPos;
|
|
2715
2697
|
s2 = input.charAt(peg$currPos);
|
|
2716
|
-
if (peg$
|
|
2698
|
+
if (peg$r11.test(s2)) {
|
|
2717
2699
|
peg$currPos++;
|
|
2718
2700
|
} else {
|
|
2719
2701
|
s2 = peg$FAILED;
|
|
2720
2702
|
if (peg$silentFails === 0) {
|
|
2721
|
-
peg$fail(peg$
|
|
2703
|
+
peg$fail(peg$e31);
|
|
2722
2704
|
}
|
|
2723
2705
|
}
|
|
2724
2706
|
if (s2 !== peg$FAILED) {
|
|
2725
2707
|
s3 = input.charAt(peg$currPos);
|
|
2726
|
-
if (peg$
|
|
2708
|
+
if (peg$r8.test(s3)) {
|
|
2727
2709
|
peg$currPos++;
|
|
2728
2710
|
} else {
|
|
2729
2711
|
s3 = peg$FAILED;
|
|
2730
2712
|
if (peg$silentFails === 0) {
|
|
2731
|
-
peg$fail(peg$
|
|
2713
|
+
peg$fail(peg$e28);
|
|
2732
2714
|
}
|
|
2733
2715
|
}
|
|
2734
2716
|
if (s3 !== peg$FAILED) {
|
|
2735
2717
|
s4 = input.charAt(peg$currPos);
|
|
2736
|
-
if (peg$
|
|
2718
|
+
if (peg$r12.test(s4)) {
|
|
2737
2719
|
peg$currPos++;
|
|
2738
2720
|
} else {
|
|
2739
2721
|
s4 = peg$FAILED;
|
|
2740
2722
|
if (peg$silentFails === 0) {
|
|
2741
|
-
peg$fail(peg$
|
|
2723
|
+
peg$fail(peg$e32);
|
|
2742
2724
|
}
|
|
2743
2725
|
}
|
|
2744
2726
|
if (s4 !== peg$FAILED) {
|
|
2745
2727
|
s5 = input.charAt(peg$currPos);
|
|
2746
|
-
if (peg$
|
|
2728
|
+
if (peg$r13.test(s5)) {
|
|
2747
2729
|
peg$currPos++;
|
|
2748
2730
|
} else {
|
|
2749
2731
|
s5 = peg$FAILED;
|
|
2750
2732
|
if (peg$silentFails === 0) {
|
|
2751
|
-
peg$fail(peg$
|
|
2733
|
+
peg$fail(peg$e33);
|
|
2752
2734
|
}
|
|
2753
2735
|
}
|
|
2754
2736
|
if (s5 !== peg$FAILED) {
|
|
2755
2737
|
s6 = input.charAt(peg$currPos);
|
|
2756
|
-
if (peg$
|
|
2738
|
+
if (peg$r14.test(s6)) {
|
|
2757
2739
|
peg$currPos++;
|
|
2758
2740
|
} else {
|
|
2759
2741
|
s6 = peg$FAILED;
|
|
2760
2742
|
if (peg$silentFails === 0) {
|
|
2761
|
-
peg$fail(peg$
|
|
2743
|
+
peg$fail(peg$e34);
|
|
2762
2744
|
}
|
|
2763
2745
|
}
|
|
2764
2746
|
if (s6 !== peg$FAILED) {
|
|
@@ -2787,42 +2769,42 @@ function peg$parse(input, options) {
|
|
|
2787
2769
|
if (s12 === peg$FAILED) {
|
|
2788
2770
|
s12 = peg$currPos;
|
|
2789
2771
|
s2 = input.charAt(peg$currPos);
|
|
2790
|
-
if (peg$
|
|
2772
|
+
if (peg$r16.test(s2)) {
|
|
2791
2773
|
peg$currPos++;
|
|
2792
2774
|
} else {
|
|
2793
2775
|
s2 = peg$FAILED;
|
|
2794
2776
|
if (peg$silentFails === 0) {
|
|
2795
|
-
peg$fail(peg$
|
|
2777
|
+
peg$fail(peg$e36);
|
|
2796
2778
|
}
|
|
2797
2779
|
}
|
|
2798
2780
|
if (s2 !== peg$FAILED) {
|
|
2799
2781
|
s3 = input.charAt(peg$currPos);
|
|
2800
|
-
if (peg$
|
|
2782
|
+
if (peg$r17.test(s3)) {
|
|
2801
2783
|
peg$currPos++;
|
|
2802
2784
|
} else {
|
|
2803
2785
|
s3 = peg$FAILED;
|
|
2804
2786
|
if (peg$silentFails === 0) {
|
|
2805
|
-
peg$fail(peg$
|
|
2787
|
+
peg$fail(peg$e37);
|
|
2806
2788
|
}
|
|
2807
2789
|
}
|
|
2808
2790
|
if (s3 !== peg$FAILED) {
|
|
2809
2791
|
s4 = input.charAt(peg$currPos);
|
|
2810
|
-
if (peg$
|
|
2792
|
+
if (peg$r15.test(s4)) {
|
|
2811
2793
|
peg$currPos++;
|
|
2812
2794
|
} else {
|
|
2813
2795
|
s4 = peg$FAILED;
|
|
2814
2796
|
if (peg$silentFails === 0) {
|
|
2815
|
-
peg$fail(peg$
|
|
2797
|
+
peg$fail(peg$e35);
|
|
2816
2798
|
}
|
|
2817
2799
|
}
|
|
2818
2800
|
if (s4 !== peg$FAILED) {
|
|
2819
2801
|
s5 = input.charAt(peg$currPos);
|
|
2820
|
-
if (peg$
|
|
2802
|
+
if (peg$r18.test(s5)) {
|
|
2821
2803
|
peg$currPos++;
|
|
2822
2804
|
} else {
|
|
2823
2805
|
s5 = peg$FAILED;
|
|
2824
2806
|
if (peg$silentFails === 0) {
|
|
2825
|
-
peg$fail(peg$
|
|
2807
|
+
peg$fail(peg$e38);
|
|
2826
2808
|
}
|
|
2827
2809
|
}
|
|
2828
2810
|
if (s5 !== peg$FAILED) {
|
|
@@ -2847,42 +2829,42 @@ function peg$parse(input, options) {
|
|
|
2847
2829
|
if (s12 === peg$FAILED) {
|
|
2848
2830
|
s12 = peg$currPos;
|
|
2849
2831
|
s2 = input.charAt(peg$currPos);
|
|
2850
|
-
if (peg$
|
|
2832
|
+
if (peg$r18.test(s2)) {
|
|
2851
2833
|
peg$currPos++;
|
|
2852
2834
|
} else {
|
|
2853
2835
|
s2 = peg$FAILED;
|
|
2854
2836
|
if (peg$silentFails === 0) {
|
|
2855
|
-
peg$fail(peg$
|
|
2837
|
+
peg$fail(peg$e38);
|
|
2856
2838
|
}
|
|
2857
2839
|
}
|
|
2858
2840
|
if (s2 !== peg$FAILED) {
|
|
2859
2841
|
s3 = input.charAt(peg$currPos);
|
|
2860
|
-
if (peg$
|
|
2842
|
+
if (peg$r15.test(s3)) {
|
|
2861
2843
|
peg$currPos++;
|
|
2862
2844
|
} else {
|
|
2863
2845
|
s3 = peg$FAILED;
|
|
2864
2846
|
if (peg$silentFails === 0) {
|
|
2865
|
-
peg$fail(peg$
|
|
2847
|
+
peg$fail(peg$e35);
|
|
2866
2848
|
}
|
|
2867
2849
|
}
|
|
2868
2850
|
if (s3 !== peg$FAILED) {
|
|
2869
2851
|
s4 = input.charAt(peg$currPos);
|
|
2870
|
-
if (peg$
|
|
2852
|
+
if (peg$r11.test(s4)) {
|
|
2871
2853
|
peg$currPos++;
|
|
2872
2854
|
} else {
|
|
2873
2855
|
s4 = peg$FAILED;
|
|
2874
2856
|
if (peg$silentFails === 0) {
|
|
2875
|
-
peg$fail(peg$
|
|
2857
|
+
peg$fail(peg$e31);
|
|
2876
2858
|
}
|
|
2877
2859
|
}
|
|
2878
2860
|
if (s4 !== peg$FAILED) {
|
|
2879
2861
|
s5 = input.charAt(peg$currPos);
|
|
2880
|
-
if (peg$
|
|
2862
|
+
if (peg$r18.test(s5)) {
|
|
2881
2863
|
peg$currPos++;
|
|
2882
2864
|
} else {
|
|
2883
2865
|
s5 = peg$FAILED;
|
|
2884
2866
|
if (peg$silentFails === 0) {
|
|
2885
|
-
peg$fail(peg$
|
|
2867
|
+
peg$fail(peg$e38);
|
|
2886
2868
|
}
|
|
2887
2869
|
}
|
|
2888
2870
|
if (s5 !== peg$FAILED) {
|
|
@@ -2907,82 +2889,82 @@ function peg$parse(input, options) {
|
|
|
2907
2889
|
if (s12 === peg$FAILED) {
|
|
2908
2890
|
s12 = peg$currPos;
|
|
2909
2891
|
s2 = input.charAt(peg$currPos);
|
|
2910
|
-
if (peg$
|
|
2892
|
+
if (peg$r6.test(s2)) {
|
|
2911
2893
|
peg$currPos++;
|
|
2912
2894
|
} else {
|
|
2913
2895
|
s2 = peg$FAILED;
|
|
2914
2896
|
if (peg$silentFails === 0) {
|
|
2915
|
-
peg$fail(peg$
|
|
2897
|
+
peg$fail(peg$e26);
|
|
2916
2898
|
}
|
|
2917
2899
|
}
|
|
2918
2900
|
if (s2 !== peg$FAILED) {
|
|
2919
2901
|
s3 = input.charAt(peg$currPos);
|
|
2920
|
-
if (peg$
|
|
2902
|
+
if (peg$r19.test(s3)) {
|
|
2921
2903
|
peg$currPos++;
|
|
2922
2904
|
} else {
|
|
2923
2905
|
s3 = peg$FAILED;
|
|
2924
2906
|
if (peg$silentFails === 0) {
|
|
2925
|
-
peg$fail(peg$
|
|
2907
|
+
peg$fail(peg$e39);
|
|
2926
2908
|
}
|
|
2927
2909
|
}
|
|
2928
2910
|
if (s3 !== peg$FAILED) {
|
|
2929
2911
|
s4 = input.charAt(peg$currPos);
|
|
2930
|
-
if (peg$
|
|
2912
|
+
if (peg$r20.test(s4)) {
|
|
2931
2913
|
peg$currPos++;
|
|
2932
2914
|
} else {
|
|
2933
2915
|
s4 = peg$FAILED;
|
|
2934
2916
|
if (peg$silentFails === 0) {
|
|
2935
|
-
peg$fail(peg$
|
|
2917
|
+
peg$fail(peg$e40);
|
|
2936
2918
|
}
|
|
2937
2919
|
}
|
|
2938
2920
|
if (s4 !== peg$FAILED) {
|
|
2939
2921
|
s5 = input.charAt(peg$currPos);
|
|
2940
|
-
if (peg$
|
|
2922
|
+
if (peg$r11.test(s5)) {
|
|
2941
2923
|
peg$currPos++;
|
|
2942
2924
|
} else {
|
|
2943
2925
|
s5 = peg$FAILED;
|
|
2944
2926
|
if (peg$silentFails === 0) {
|
|
2945
|
-
peg$fail(peg$
|
|
2927
|
+
peg$fail(peg$e31);
|
|
2946
2928
|
}
|
|
2947
2929
|
}
|
|
2948
2930
|
if (s5 !== peg$FAILED) {
|
|
2949
2931
|
s6 = input.charAt(peg$currPos);
|
|
2950
|
-
if (peg$
|
|
2932
|
+
if (peg$r8.test(s6)) {
|
|
2951
2933
|
peg$currPos++;
|
|
2952
2934
|
} else {
|
|
2953
2935
|
s6 = peg$FAILED;
|
|
2954
2936
|
if (peg$silentFails === 0) {
|
|
2955
|
-
peg$fail(peg$
|
|
2937
|
+
peg$fail(peg$e28);
|
|
2956
2938
|
}
|
|
2957
2939
|
}
|
|
2958
2940
|
if (s6 !== peg$FAILED) {
|
|
2959
2941
|
s7 = input.charAt(peg$currPos);
|
|
2960
|
-
if (peg$
|
|
2942
|
+
if (peg$r12.test(s7)) {
|
|
2961
2943
|
peg$currPos++;
|
|
2962
2944
|
} else {
|
|
2963
2945
|
s7 = peg$FAILED;
|
|
2964
2946
|
if (peg$silentFails === 0) {
|
|
2965
|
-
peg$fail(peg$
|
|
2947
|
+
peg$fail(peg$e32);
|
|
2966
2948
|
}
|
|
2967
2949
|
}
|
|
2968
2950
|
if (s7 !== peg$FAILED) {
|
|
2969
2951
|
s8 = input.charAt(peg$currPos);
|
|
2970
|
-
if (peg$
|
|
2952
|
+
if (peg$r13.test(s8)) {
|
|
2971
2953
|
peg$currPos++;
|
|
2972
2954
|
} else {
|
|
2973
2955
|
s8 = peg$FAILED;
|
|
2974
2956
|
if (peg$silentFails === 0) {
|
|
2975
|
-
peg$fail(peg$
|
|
2957
|
+
peg$fail(peg$e33);
|
|
2976
2958
|
}
|
|
2977
2959
|
}
|
|
2978
2960
|
if (s8 !== peg$FAILED) {
|
|
2979
2961
|
s9 = input.charAt(peg$currPos);
|
|
2980
|
-
if (peg$
|
|
2962
|
+
if (peg$r14.test(s9)) {
|
|
2981
2963
|
peg$currPos++;
|
|
2982
2964
|
} else {
|
|
2983
2965
|
s9 = peg$FAILED;
|
|
2984
2966
|
if (peg$silentFails === 0) {
|
|
2985
|
-
peg$fail(peg$
|
|
2967
|
+
peg$fail(peg$e34);
|
|
2986
2968
|
}
|
|
2987
2969
|
}
|
|
2988
2970
|
if (s9 !== peg$FAILED) {
|
|
@@ -3054,24 +3036,24 @@ function peg$parse(input, options) {
|
|
|
3054
3036
|
s0 = [];
|
|
3055
3037
|
s12 = [];
|
|
3056
3038
|
s2 = input.charAt(peg$currPos);
|
|
3057
|
-
if (peg$
|
|
3039
|
+
if (peg$r21.test(s2)) {
|
|
3058
3040
|
peg$currPos++;
|
|
3059
3041
|
} else {
|
|
3060
3042
|
s2 = peg$FAILED;
|
|
3061
3043
|
if (peg$silentFails === 0) {
|
|
3062
|
-
peg$fail(peg$
|
|
3044
|
+
peg$fail(peg$e41);
|
|
3063
3045
|
}
|
|
3064
3046
|
}
|
|
3065
3047
|
if (s2 !== peg$FAILED) {
|
|
3066
3048
|
while (s2 !== peg$FAILED) {
|
|
3067
3049
|
s12.push(s2);
|
|
3068
3050
|
s2 = input.charAt(peg$currPos);
|
|
3069
|
-
if (peg$
|
|
3051
|
+
if (peg$r21.test(s2)) {
|
|
3070
3052
|
peg$currPos++;
|
|
3071
3053
|
} else {
|
|
3072
3054
|
s2 = peg$FAILED;
|
|
3073
3055
|
if (peg$silentFails === 0) {
|
|
3074
|
-
peg$fail(peg$
|
|
3056
|
+
peg$fail(peg$e41);
|
|
3075
3057
|
}
|
|
3076
3058
|
}
|
|
3077
3059
|
}
|
|
@@ -3091,24 +3073,24 @@ function peg$parse(input, options) {
|
|
|
3091
3073
|
s0.push(s12);
|
|
3092
3074
|
s12 = [];
|
|
3093
3075
|
s2 = input.charAt(peg$currPos);
|
|
3094
|
-
if (peg$
|
|
3076
|
+
if (peg$r21.test(s2)) {
|
|
3095
3077
|
peg$currPos++;
|
|
3096
3078
|
} else {
|
|
3097
3079
|
s2 = peg$FAILED;
|
|
3098
3080
|
if (peg$silentFails === 0) {
|
|
3099
|
-
peg$fail(peg$
|
|
3081
|
+
peg$fail(peg$e41);
|
|
3100
3082
|
}
|
|
3101
3083
|
}
|
|
3102
3084
|
if (s2 !== peg$FAILED) {
|
|
3103
3085
|
while (s2 !== peg$FAILED) {
|
|
3104
3086
|
s12.push(s2);
|
|
3105
3087
|
s2 = input.charAt(peg$currPos);
|
|
3106
|
-
if (peg$
|
|
3088
|
+
if (peg$r21.test(s2)) {
|
|
3107
3089
|
peg$currPos++;
|
|
3108
3090
|
} else {
|
|
3109
3091
|
s2 = peg$FAILED;
|
|
3110
3092
|
if (peg$silentFails === 0) {
|
|
3111
|
-
peg$fail(peg$
|
|
3093
|
+
peg$fail(peg$e41);
|
|
3112
3094
|
}
|
|
3113
3095
|
}
|
|
3114
3096
|
}
|
|
@@ -3136,7 +3118,7 @@ function peg$parse(input, options) {
|
|
|
3136
3118
|
} else {
|
|
3137
3119
|
s12 = peg$FAILED;
|
|
3138
3120
|
if (peg$silentFails === 0) {
|
|
3139
|
-
peg$fail(peg$
|
|
3121
|
+
peg$fail(peg$e42);
|
|
3140
3122
|
}
|
|
3141
3123
|
}
|
|
3142
3124
|
if (s12 !== peg$FAILED) {
|
|
@@ -3150,7 +3132,7 @@ function peg$parse(input, options) {
|
|
|
3150
3132
|
} else {
|
|
3151
3133
|
s5 = peg$FAILED;
|
|
3152
3134
|
if (peg$silentFails === 0) {
|
|
3153
|
-
peg$fail(peg$
|
|
3135
|
+
peg$fail(peg$e43);
|
|
3154
3136
|
}
|
|
3155
3137
|
}
|
|
3156
3138
|
peg$silentFails--;
|
|
@@ -3192,7 +3174,7 @@ function peg$parse(input, options) {
|
|
|
3192
3174
|
} else {
|
|
3193
3175
|
s5 = peg$FAILED;
|
|
3194
3176
|
if (peg$silentFails === 0) {
|
|
3195
|
-
peg$fail(peg$
|
|
3177
|
+
peg$fail(peg$e43);
|
|
3196
3178
|
}
|
|
3197
3179
|
}
|
|
3198
3180
|
peg$silentFails--;
|
|
@@ -3230,7 +3212,7 @@ function peg$parse(input, options) {
|
|
|
3230
3212
|
} else {
|
|
3231
3213
|
s3 = peg$FAILED;
|
|
3232
3214
|
if (peg$silentFails === 0) {
|
|
3233
|
-
peg$fail(peg$
|
|
3215
|
+
peg$fail(peg$e43);
|
|
3234
3216
|
}
|
|
3235
3217
|
}
|
|
3236
3218
|
if (s3 !== peg$FAILED) {
|
|
@@ -3255,29 +3237,29 @@ function peg$parse(input, options) {
|
|
|
3255
3237
|
} else {
|
|
3256
3238
|
s12 = peg$FAILED;
|
|
3257
3239
|
if (peg$silentFails === 0) {
|
|
3258
|
-
peg$fail(peg$
|
|
3240
|
+
peg$fail(peg$e44);
|
|
3259
3241
|
}
|
|
3260
3242
|
}
|
|
3261
3243
|
if (s12 !== peg$FAILED) {
|
|
3262
3244
|
s2 = [];
|
|
3263
3245
|
s3 = input.charAt(peg$currPos);
|
|
3264
|
-
if (peg$
|
|
3246
|
+
if (peg$r22.test(s3)) {
|
|
3265
3247
|
peg$currPos++;
|
|
3266
3248
|
} else {
|
|
3267
3249
|
s3 = peg$FAILED;
|
|
3268
3250
|
if (peg$silentFails === 0) {
|
|
3269
|
-
peg$fail(peg$
|
|
3251
|
+
peg$fail(peg$e45);
|
|
3270
3252
|
}
|
|
3271
3253
|
}
|
|
3272
3254
|
while (s3 !== peg$FAILED) {
|
|
3273
3255
|
s2.push(s3);
|
|
3274
3256
|
s3 = input.charAt(peg$currPos);
|
|
3275
|
-
if (peg$
|
|
3257
|
+
if (peg$r22.test(s3)) {
|
|
3276
3258
|
peg$currPos++;
|
|
3277
3259
|
} else {
|
|
3278
3260
|
s3 = peg$FAILED;
|
|
3279
3261
|
if (peg$silentFails === 0) {
|
|
3280
|
-
peg$fail(peg$
|
|
3262
|
+
peg$fail(peg$e45);
|
|
3281
3263
|
}
|
|
3282
3264
|
}
|
|
3283
3265
|
}
|
|
@@ -3287,7 +3269,7 @@ function peg$parse(input, options) {
|
|
|
3287
3269
|
} else {
|
|
3288
3270
|
s3 = peg$FAILED;
|
|
3289
3271
|
if (peg$silentFails === 0) {
|
|
3290
|
-
peg$fail(peg$
|
|
3272
|
+
peg$fail(peg$e46);
|
|
3291
3273
|
}
|
|
3292
3274
|
}
|
|
3293
3275
|
if (s3 === peg$FAILED) {
|
|
@@ -3332,29 +3314,29 @@ function peg$parse(input, options) {
|
|
|
3332
3314
|
} else {
|
|
3333
3315
|
s12 = peg$FAILED;
|
|
3334
3316
|
if (peg$silentFails === 0) {
|
|
3335
|
-
peg$fail(peg$
|
|
3317
|
+
peg$fail(peg$e47);
|
|
3336
3318
|
}
|
|
3337
3319
|
}
|
|
3338
3320
|
if (s12 !== peg$FAILED) {
|
|
3339
3321
|
s2 = [];
|
|
3340
3322
|
s3 = input.charAt(peg$currPos);
|
|
3341
|
-
if (peg$
|
|
3323
|
+
if (peg$r22.test(s3)) {
|
|
3342
3324
|
peg$currPos++;
|
|
3343
3325
|
} else {
|
|
3344
3326
|
s3 = peg$FAILED;
|
|
3345
3327
|
if (peg$silentFails === 0) {
|
|
3346
|
-
peg$fail(peg$
|
|
3328
|
+
peg$fail(peg$e45);
|
|
3347
3329
|
}
|
|
3348
3330
|
}
|
|
3349
3331
|
while (s3 !== peg$FAILED) {
|
|
3350
3332
|
s2.push(s3);
|
|
3351
3333
|
s3 = input.charAt(peg$currPos);
|
|
3352
|
-
if (peg$
|
|
3334
|
+
if (peg$r22.test(s3)) {
|
|
3353
3335
|
peg$currPos++;
|
|
3354
3336
|
} else {
|
|
3355
3337
|
s3 = peg$FAILED;
|
|
3356
3338
|
if (peg$silentFails === 0) {
|
|
3357
|
-
peg$fail(peg$
|
|
3339
|
+
peg$fail(peg$e45);
|
|
3358
3340
|
}
|
|
3359
3341
|
}
|
|
3360
3342
|
}
|
|
@@ -3364,7 +3346,7 @@ function peg$parse(input, options) {
|
|
|
3364
3346
|
} else {
|
|
3365
3347
|
s3 = peg$FAILED;
|
|
3366
3348
|
if (peg$silentFails === 0) {
|
|
3367
|
-
peg$fail(peg$
|
|
3349
|
+
peg$fail(peg$e46);
|
|
3368
3350
|
}
|
|
3369
3351
|
}
|
|
3370
3352
|
if (s3 === peg$FAILED) {
|
|
@@ -4266,6 +4248,75 @@ function buildFromAst(ast) {
|
|
|
4266
4248
|
return graph;
|
|
4267
4249
|
}
|
|
4268
4250
|
|
|
4251
|
+
// src/parser/number-scan.ts
|
|
4252
|
+
var ASCII_DEL = 127;
|
|
4253
|
+
function isLetter(c) {
|
|
4254
|
+
if (c === void 0) return false;
|
|
4255
|
+
return c >= "A" && c <= "Z" || c >= "a" && c <= "z" || c === "_" || c.charCodeAt(0) > ASCII_DEL;
|
|
4256
|
+
}
|
|
4257
|
+
function isDigit(c) {
|
|
4258
|
+
return c !== void 0 && c >= "0" && c <= "9";
|
|
4259
|
+
}
|
|
4260
|
+
function startsNumber(s, i) {
|
|
4261
|
+
const c = s[i];
|
|
4262
|
+
if (isDigit(c)) return true;
|
|
4263
|
+
if (c === ".") return isDigit(s[i + 1]);
|
|
4264
|
+
if (c !== "-") return false;
|
|
4265
|
+
return isDigit(s[i + 1]) || s[i + 1] === "." && isDigit(s[i + 2]);
|
|
4266
|
+
}
|
|
4267
|
+
function matchNumber(s, i) {
|
|
4268
|
+
let j = s[i] === "-" ? i + 1 : i;
|
|
4269
|
+
if (s[j] === ".") {
|
|
4270
|
+
j++;
|
|
4271
|
+
while (isDigit(s[j])) j++;
|
|
4272
|
+
} else {
|
|
4273
|
+
while (isDigit(s[j])) j++;
|
|
4274
|
+
if (s[j] === ".") {
|
|
4275
|
+
j++;
|
|
4276
|
+
while (isDigit(s[j])) j++;
|
|
4277
|
+
}
|
|
4278
|
+
}
|
|
4279
|
+
if (s[j] === "." || isLetter(s[j])) j++;
|
|
4280
|
+
return j;
|
|
4281
|
+
}
|
|
4282
|
+
function twoDots(text) {
|
|
4283
|
+
const dot = text.indexOf(".");
|
|
4284
|
+
return dot !== -1 && dot !== text.length - 1;
|
|
4285
|
+
}
|
|
4286
|
+
function chkNum(text) {
|
|
4287
|
+
const c = text[text.length - 1];
|
|
4288
|
+
return !isDigit(c) && c !== "." || c === "." && twoDots(text);
|
|
4289
|
+
}
|
|
4290
|
+
function lexToken(s, i) {
|
|
4291
|
+
if (isLetter(s[i])) {
|
|
4292
|
+
let j2 = i + 1;
|
|
4293
|
+
while (isLetter(s[j2]) || isDigit(s[j2])) j2++;
|
|
4294
|
+
return { next: j2, bad: null };
|
|
4295
|
+
}
|
|
4296
|
+
if (s[i] === "-" && (s[i + 1] === "-" || s[i + 1] === ">")) return { next: i + 2, bad: null };
|
|
4297
|
+
if (!startsNumber(s, i)) return { next: i + 1, bad: null };
|
|
4298
|
+
const j = matchNumber(s, i);
|
|
4299
|
+
const text = s.slice(i, j);
|
|
4300
|
+
return chkNum(text) ? { next: j - 1, bad: text } : { next: j, bad: null };
|
|
4301
|
+
}
|
|
4302
|
+
function scanNumberAmbiguities(src, stripped) {
|
|
4303
|
+
const out = [];
|
|
4304
|
+
let line = 1;
|
|
4305
|
+
let lineAt = 0;
|
|
4306
|
+
for (let i = 0; i < stripped.length; ) {
|
|
4307
|
+
const { next, bad } = lexToken(stripped, i);
|
|
4308
|
+
if (bad !== null) {
|
|
4309
|
+
for (; lineAt < i; lineAt++) if (src[lineAt] === "\n") line++;
|
|
4310
|
+
out.push({ text: bad, line, offset: i });
|
|
4311
|
+
}
|
|
4312
|
+
i = next;
|
|
4313
|
+
}
|
|
4314
|
+
return out;
|
|
4315
|
+
}
|
|
4316
|
+
function numberAmbiguityMessage(a) {
|
|
4317
|
+
return `Warning: syntax ambiguity - badly delimited number '${a.text}' in line ${a.line} of input splits into two tokens`;
|
|
4318
|
+
}
|
|
4319
|
+
|
|
4269
4320
|
// src/errors.ts
|
|
4270
4321
|
var FRIENDLY_MESSAGES = {
|
|
4271
4322
|
SYNTAX_ERROR: "There is a syntax error in the DOT source.",
|
|
@@ -4542,6 +4593,12 @@ function isPeggyError(err) {
|
|
|
4542
4593
|
if (typeof e["location"] !== "object" || e["location"] === null) return false;
|
|
4543
4594
|
return "start" in e["location"];
|
|
4544
4595
|
}
|
|
4596
|
+
function warnNumberAmbiguities(src, upTo) {
|
|
4597
|
+
for (const a of scanNumberAmbiguities(src, Stripper.strip(src))) {
|
|
4598
|
+
if (a.offset > upTo) break;
|
|
4599
|
+
console.error(numberAmbiguityMessage(a));
|
|
4600
|
+
}
|
|
4601
|
+
}
|
|
4545
4602
|
function parse(src) {
|
|
4546
4603
|
if (typeof src !== "string") {
|
|
4547
4604
|
throw invalidArgType("dotSource", "string", src);
|
|
@@ -4552,6 +4609,7 @@ function parse(src) {
|
|
|
4552
4609
|
} catch (err) {
|
|
4553
4610
|
if (isPeggyError(err)) {
|
|
4554
4611
|
const start = err.location.start;
|
|
4612
|
+
warnNumberAmbiguities(src, start.offset);
|
|
4555
4613
|
const code = err.found === null ? "SYNTAX_UNEXPECTED_EOF" : "SYNTAX_ERROR";
|
|
4556
4614
|
throw new ParseError(
|
|
4557
4615
|
err instanceof Error ? err.message : String(err),
|
|
@@ -4569,6 +4627,7 @@ function parse(src) {
|
|
|
4569
4627
|
}
|
|
4570
4628
|
throw err;
|
|
4571
4629
|
}
|
|
4630
|
+
warnNumberAmbiguities(src, src.length);
|
|
4572
4631
|
validateEdgeOperators(src, ast.directed);
|
|
4573
4632
|
return buildFromAst(ast);
|
|
4574
4633
|
}
|
|
@@ -5552,6 +5611,10 @@ var RenderJob = class {
|
|
|
5552
5611
|
format;
|
|
5553
5612
|
bb = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
5554
5613
|
pad = { x: 0, y: 0 };
|
|
5614
|
+
/** Current page clip in graph units, as setup_page computes it from the
|
|
5615
|
+
* viewport focus/view (see setupPageClip). Read by the SVG page translate and
|
|
5616
|
+
* background. @see lib/gvc/gvcjob.h:GVJ_s.clip; lib/common/emit.c:setup_page */
|
|
5617
|
+
clip = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
5555
5618
|
/** Graph-level `margin=` (init_job_margin); page-pagination margin, distinct
|
|
5556
5619
|
* from node/cluster label margin. @see lib/common/emit.c:3309-3331 */
|
|
5557
5620
|
margin = { x: 0, y: 0 };
|
|
@@ -5721,6 +5784,8 @@ function gvrenderTextspan(renderer, pos, span, job) {
|
|
|
5721
5784
|
}
|
|
5722
5785
|
|
|
5723
5786
|
// src/util/math.ts
|
|
5787
|
+
var INT32_MAX = 2147483647;
|
|
5788
|
+
var INT32_MIN = -2147483648;
|
|
5724
5789
|
function isExactlyEqual(a, b) {
|
|
5725
5790
|
const buf = new ArrayBuffer(16);
|
|
5726
5791
|
const dv = new DataView(buf);
|
|
@@ -5732,6 +5797,11 @@ function isExactlyEqual(a, b) {
|
|
|
5732
5797
|
}
|
|
5733
5798
|
return true;
|
|
5734
5799
|
}
|
|
5800
|
+
function d2i(v) {
|
|
5801
|
+
if (v > INT32_MAX) return INT32_MAX;
|
|
5802
|
+
if (v < INT32_MIN) return INT32_MIN;
|
|
5803
|
+
return Math.trunc(v);
|
|
5804
|
+
}
|
|
5735
5805
|
|
|
5736
5806
|
// src/common/colorData.ts
|
|
5737
5807
|
var COLOR_LIB = [
|
|
@@ -9881,11 +9951,11 @@ function emitHtmlLabel(placed, pos, renderer, job) {
|
|
|
9881
9951
|
style: placed.style
|
|
9882
9952
|
});
|
|
9883
9953
|
}
|
|
9884
|
-
for (const cell2 of placed.cells) emitHtmlCell(cell2, pos, renderer, job);
|
|
9885
9954
|
emitTableRules(placed, pos, renderer, job);
|
|
9886
9955
|
if (placed.border > 0) {
|
|
9887
9956
|
emitBorder({ box: placed.box, pos, border: placed.border, color: placed.color, sides: placed.sides, style: placed.style }, renderer, job);
|
|
9888
9957
|
}
|
|
9958
|
+
for (const cell2 of placed.cells) emitHtmlCell(cell2, pos, renderer, job);
|
|
9889
9959
|
}
|
|
9890
9960
|
if (inAnchor) endHtmlAnchor(renderer, job);
|
|
9891
9961
|
if (clustersLast && initHtmlAnchor(anchorData, tblBox, renderer, job)) {
|
|
@@ -15743,8 +15813,8 @@ function normalizeFontName(name) {
|
|
|
15743
15813
|
for (let i = 0; i < name.length; i++) {
|
|
15744
15814
|
const ch = name[i];
|
|
15745
15815
|
const code = ch.charCodeAt(0);
|
|
15746
|
-
const
|
|
15747
|
-
if (
|
|
15816
|
+
const isLetter2 = code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
15817
|
+
if (isLetter2) result += ch.toLowerCase();
|
|
15748
15818
|
}
|
|
15749
15819
|
return result;
|
|
15750
15820
|
}
|
|
@@ -16603,7 +16673,7 @@ function interpretCRNL(str) {
|
|
|
16603
16673
|
|
|
16604
16674
|
// src/common/make-label.ts
|
|
16605
16675
|
var DEFAULT_FONTSIZE2 = 14;
|
|
16606
|
-
var DEFAULT_FONTNAME = "Times
|
|
16676
|
+
var DEFAULT_FONTNAME = "Times-Roman";
|
|
16607
16677
|
var DEFAULT_COLOR2 = "black";
|
|
16608
16678
|
function getPenColor(obj) {
|
|
16609
16679
|
if (obj === void 0) return void 0;
|
|
@@ -16870,6 +16940,18 @@ function fms(a, b, c) {
|
|
|
16870
16940
|
function cround(v) {
|
|
16871
16941
|
return v >= 0 ? Math.floor(v + 0.5) : Math.ceil(v - 0.5);
|
|
16872
16942
|
}
|
|
16943
|
+
var INT64_MAX = 2n ** 63n - 1n;
|
|
16944
|
+
var INT64_MIN = -(2n ** 63n);
|
|
16945
|
+
var TWO_POW_63 = 2 ** 63;
|
|
16946
|
+
function croundNarrow32(v) {
|
|
16947
|
+
const r = cround(v);
|
|
16948
|
+
let i64;
|
|
16949
|
+
if (Number.isNaN(r)) i64 = 0n;
|
|
16950
|
+
else if (r >= TWO_POW_63) i64 = INT64_MAX;
|
|
16951
|
+
else if (r < -TWO_POW_63) i64 = INT64_MIN;
|
|
16952
|
+
else i64 = BigInt(r);
|
|
16953
|
+
return Number(BigInt.asIntN(32, i64));
|
|
16954
|
+
}
|
|
16873
16955
|
function RADIANS(deg) {
|
|
16874
16956
|
return deg / 180 * Math.PI;
|
|
16875
16957
|
}
|
|
@@ -23576,9 +23658,12 @@ function isMulticolor(fillcolor) {
|
|
|
23576
23658
|
return fillcolor.includes(":");
|
|
23577
23659
|
}
|
|
23578
23660
|
function renderEllipse(ring, coord, renderer, job, filled) {
|
|
23579
|
-
const
|
|
23580
|
-
const
|
|
23581
|
-
const
|
|
23661
|
+
const af0 = { x: ring[0].x + coord.x, y: ring[0].y + coord.y };
|
|
23662
|
+
const af1 = { x: ring[1].x + coord.x, y: ring[1].y + coord.y };
|
|
23663
|
+
const mid = { x: (af0.x + af1.x) / 2, y: (af0.y + af1.y) / 2 };
|
|
23664
|
+
const rx = af1.x - mid.x;
|
|
23665
|
+
const ry = af1.y - mid.y;
|
|
23666
|
+
const center = transformPoint(mid, job);
|
|
23582
23667
|
renderer.ellipse(center, rx, ry, filled, job);
|
|
23583
23668
|
}
|
|
23584
23669
|
function renderPolygon(ring, coord, renderer, job, filled) {
|
|
@@ -25420,7 +25505,7 @@ var BGCOLOR_TRANSPARENT = "\0transparent";
|
|
|
25420
25505
|
function formatG(n) {
|
|
25421
25506
|
return String(parseFloat(n.toPrecision(6)));
|
|
25422
25507
|
}
|
|
25423
|
-
function emitSvgTag(job) {
|
|
25508
|
+
function emitSvgTag(job, svgid = "") {
|
|
25424
25509
|
const bb = job.bb;
|
|
25425
25510
|
const szx = bb.ur.x - bb.ll.x + 2 * job.pad.x;
|
|
25426
25511
|
const szy = bb.ur.y - bb.ll.y + 2 * job.pad.y;
|
|
@@ -25429,16 +25514,20 @@ function emitSvgTag(job) {
|
|
|
25429
25514
|
const rotated = job.rotation !== 0;
|
|
25430
25515
|
const pageX = rotated ? viewY : viewX;
|
|
25431
25516
|
const pageY = rotated ? viewX : viewY;
|
|
25432
|
-
const w =
|
|
25433
|
-
const h =
|
|
25517
|
+
const w = croundNarrow32(pageX + 2 * job.margin.x);
|
|
25518
|
+
const h = croundNarrow32(pageY + 2 * job.margin.y);
|
|
25434
25519
|
job.write('<svg width="' + String(w) + 'pt" height="' + String(h) + 'pt"\n');
|
|
25435
|
-
const vbLLx =
|
|
25436
|
-
const vbLLy =
|
|
25437
|
-
const vbURx =
|
|
25438
|
-
const vbURy =
|
|
25520
|
+
const vbLLx = croundNarrow32(job.margin.x);
|
|
25521
|
+
const vbLLy = croundNarrow32(job.margin.y);
|
|
25522
|
+
const vbURx = croundNarrow32(job.margin.x + pageX);
|
|
25523
|
+
const vbURy = croundNarrow32(job.margin.y + pageY);
|
|
25439
25524
|
job.write(' viewBox="' + String(vbLLx) + ".00 " + String(vbLLy) + ".00 " + String(vbURx) + ".00 " + String(vbURy) + '.00"\n');
|
|
25440
25525
|
job.write(' xmlns="http://www.w3.org/2000/svg"');
|
|
25441
|
-
job.write(' xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
25526
|
+
job.write(' xmlns:xlink="http://www.w3.org/1999/xlink"');
|
|
25527
|
+
if (svgid !== void 0 && svgid.length > 0) {
|
|
25528
|
+
job.write(' id="' + escapeXmlTitle(svgid) + '"');
|
|
25529
|
+
}
|
|
25530
|
+
job.write(">\n");
|
|
25442
25531
|
}
|
|
25443
25532
|
function emitGraphGroupOpen(graphId, classStr, tx, ty, job) {
|
|
25444
25533
|
const sx = formatG(job.scale.x);
|
|
@@ -25462,12 +25551,12 @@ function resolveGraphBgcolor(bgcolorAttr) {
|
|
|
25462
25551
|
const solid = grad !== null ? grad[0] : bgcolorAttr;
|
|
25463
25552
|
return colorPaint(resolveRenderColor(solid));
|
|
25464
25553
|
}
|
|
25465
|
-
function emitGraphBackground(
|
|
25554
|
+
function emitGraphBackground(clip, resolvedColor, job) {
|
|
25466
25555
|
if (resolvedColor === BGCOLOR_TRANSPARENT) return;
|
|
25467
|
-
const left2 =
|
|
25468
|
-
const right2 =
|
|
25469
|
-
const top = -
|
|
25470
|
-
const bottom = -
|
|
25556
|
+
const left2 = clip.ll.x;
|
|
25557
|
+
const right2 = clip.ur.x;
|
|
25558
|
+
const top = -clip.ur.y;
|
|
25559
|
+
const bottom = -clip.ll.y;
|
|
25471
25560
|
const corners = [
|
|
25472
25561
|
[left2, bottom],
|
|
25473
25562
|
[left2, top],
|
|
@@ -25484,11 +25573,11 @@ function emitGraphBackground(bb, resolvedColor, job) {
|
|
|
25484
25573
|
});
|
|
25485
25574
|
job.write('"/>\n');
|
|
25486
25575
|
}
|
|
25487
|
-
function bgGradientPts(
|
|
25488
|
-
const left2 =
|
|
25489
|
-
const right2 =
|
|
25490
|
-
const bottom =
|
|
25491
|
-
const top =
|
|
25576
|
+
function bgGradientPts(clip) {
|
|
25577
|
+
const left2 = clip.ll.x;
|
|
25578
|
+
const right2 = clip.ur.x;
|
|
25579
|
+
const bottom = clip.ll.y;
|
|
25580
|
+
const top = clip.ur.y;
|
|
25492
25581
|
return [
|
|
25493
25582
|
{ x: left2, y: bottom },
|
|
25494
25583
|
{ x: left2, y: top },
|
|
@@ -25496,11 +25585,11 @@ function bgGradientPts(bb, pad) {
|
|
|
25496
25585
|
{ x: right2, y: bottom }
|
|
25497
25586
|
];
|
|
25498
25587
|
}
|
|
25499
|
-
function writeGradientPolygon(
|
|
25500
|
-
const left2 =
|
|
25501
|
-
const right2 =
|
|
25502
|
-
const top = -
|
|
25503
|
-
const bottom = -
|
|
25588
|
+
function writeGradientPolygon(clip, id, job) {
|
|
25589
|
+
const left2 = clip.ll.x;
|
|
25590
|
+
const right2 = clip.ur.x;
|
|
25591
|
+
const top = -clip.ur.y;
|
|
25592
|
+
const bottom = -clip.ll.y;
|
|
25504
25593
|
const corners = [
|
|
25505
25594
|
[left2, bottom],
|
|
25506
25595
|
[left2, top],
|
|
@@ -25517,7 +25606,7 @@ function writeGradientPolygon(bb, id, job) {
|
|
|
25517
25606
|
});
|
|
25518
25607
|
job.write('"/>\n');
|
|
25519
25608
|
}
|
|
25520
|
-
function emitGradientBackground(
|
|
25609
|
+
function emitGradientBackground(clip, spec, job) {
|
|
25521
25610
|
const obj = createObjState(0 /* RootGraph */);
|
|
25522
25611
|
obj.id = "graph0";
|
|
25523
25612
|
obj.fillColor = resolveRenderColor(spec.fillColor);
|
|
@@ -25532,10 +25621,10 @@ function emitGradientBackground(bb, spec, job) {
|
|
|
25532
25621
|
emitRadialGradient(job, gid);
|
|
25533
25622
|
} else {
|
|
25534
25623
|
gid = gradientId("graph0", "l", job.linearGradId++);
|
|
25535
|
-
emitLinearGradient(job, bgGradientPts(
|
|
25624
|
+
emitLinearGradient(job, bgGradientPts(clip), gid);
|
|
25536
25625
|
}
|
|
25537
25626
|
job.popObj();
|
|
25538
|
-
writeGradientPolygon(
|
|
25627
|
+
writeGradientPolygon(clip, gid, job);
|
|
25539
25628
|
}
|
|
25540
25629
|
function resolveBgGradientSpec(g, bgcolorAttr) {
|
|
25541
25630
|
const stop = findStopColor(bgcolorAttr);
|
|
@@ -25545,17 +25634,17 @@ function resolveBgGradientSpec(g, bgcolorAttr) {
|
|
|
25545
25634
|
const angle = angleStr ? parseInt(angleStr, 10) || 0 : 0;
|
|
25546
25635
|
return { fillColor: stop.fillColor, stopColor: stop.stopColor, frac: stop.frac, angle, radial: flags.radial };
|
|
25547
25636
|
}
|
|
25548
|
-
function emitBgcolorBackground(g,
|
|
25637
|
+
function emitBgcolorBackground(g, clip, bgcolorAttr, job) {
|
|
25549
25638
|
if (!bgcolorAttr || bgcolorAttr.length === 0 || bgcolorAttr === "transparent") {
|
|
25550
|
-
emitGraphBackground(
|
|
25639
|
+
emitGraphBackground(clip, resolveGraphBgcolor(bgcolorAttr), job);
|
|
25551
25640
|
return;
|
|
25552
25641
|
}
|
|
25553
25642
|
const spec = resolveBgGradientSpec(g, bgcolorAttr);
|
|
25554
25643
|
if (spec !== null) {
|
|
25555
|
-
emitGradientBackground(
|
|
25644
|
+
emitGradientBackground(clip, spec, job);
|
|
25556
25645
|
return;
|
|
25557
25646
|
}
|
|
25558
|
-
emitGraphBackground(
|
|
25647
|
+
emitGraphBackground(clip, resolveGraphBgcolor(bgcolorAttr), job);
|
|
25559
25648
|
}
|
|
25560
25649
|
function svgBeginGraph(g, job) {
|
|
25561
25650
|
job.devscale = { x: 1, y: -1 };
|
|
@@ -25569,13 +25658,23 @@ function svgBeginGraph(g, job) {
|
|
|
25569
25658
|
}
|
|
25570
25659
|
job.write(SVG_DOCTYPE);
|
|
25571
25660
|
job.write(SVG_GENERATOR_COMMENT);
|
|
25572
|
-
|
|
25661
|
+
const comment = g.attrs.get("comment");
|
|
25662
|
+
if (comment !== void 0 && comment.length > 0) svgComment(comment, job);
|
|
25663
|
+
emitTitlePagesComment(g, job);
|
|
25664
|
+
emitSvgTag(job, g.attrs.get("svgid"));
|
|
25665
|
+
}
|
|
25666
|
+
function emitTitlePagesComment(g, job) {
|
|
25667
|
+
job.write("<!--");
|
|
25668
|
+
if (g.name.length > 0 && g.name[0] !== "%") {
|
|
25669
|
+
job.write(" Title: " + escapeXmlTitle(g.name));
|
|
25670
|
+
}
|
|
25671
|
+
job.write(" Pages: 1 -->\n");
|
|
25573
25672
|
}
|
|
25574
25673
|
function svgBeginPage(g, job) {
|
|
25575
|
-
const
|
|
25674
|
+
const clip = job.clip;
|
|
25576
25675
|
const z = job.scale.x;
|
|
25577
|
-
const tx = job.rotation !== 0 ? -
|
|
25578
|
-
const ty =
|
|
25676
|
+
const tx = job.rotation !== 0 ? -clip.ur.x - job.margin.x / z : -clip.ll.x + job.margin.x / z;
|
|
25677
|
+
const ty = clip.ur.y + job.margin.y / z;
|
|
25579
25678
|
emitGraphGroupOpen(
|
|
25580
25679
|
job.idLayerPrefix() + svgGraphId(g, job),
|
|
25581
25680
|
svgGraphClass(g),
|
|
@@ -25586,7 +25685,7 @@ function svgBeginPage(g, job) {
|
|
|
25586
25685
|
emitGraphTitle(g, job);
|
|
25587
25686
|
}
|
|
25588
25687
|
function svgPageBackground(g, job) {
|
|
25589
|
-
emitBgcolorBackground(g, job.
|
|
25688
|
+
emitBgcolorBackground(g, job.clip, g.attrs.get("bgcolor"), job);
|
|
25590
25689
|
}
|
|
25591
25690
|
function svgEndPage(job) {
|
|
25592
25691
|
job.write("</g>\n");
|
|
@@ -25922,7 +26021,7 @@ function svgPolyline(pts, job) {
|
|
|
25922
26021
|
job.write('"/>\n');
|
|
25923
26022
|
}
|
|
25924
26023
|
function svgComment(text, job) {
|
|
25925
|
-
job.write("<!-- " +
|
|
26024
|
+
job.write("<!-- " + escapeXmlTitle(text) + " -->\n");
|
|
25926
26025
|
}
|
|
25927
26026
|
function svgEdgePath(e, job) {
|
|
25928
26027
|
const spl = e.info.spl;
|
|
@@ -26109,6 +26208,22 @@ function initJobViewportZoom(bb, size, pad) {
|
|
|
26109
26208
|
if (drawingNeedsFit(size, szx, szy)) return Math.min(size.x / szx, size.y / szy);
|
|
26110
26209
|
return 1;
|
|
26111
26210
|
}
|
|
26211
|
+
function setupPageClip(bb, size, pad, z) {
|
|
26212
|
+
const jbLL = { x: bb.ll.x - pad.x, y: bb.ll.y - pad.y };
|
|
26213
|
+
const jbUR = { x: bb.ur.x + pad.x, y: bb.ur.y + pad.y };
|
|
26214
|
+
const sz = { x: jbUR.x - jbLL.x, y: jbUR.y - jbLL.y };
|
|
26215
|
+
if (size !== null && size.x > 1e-3 && size.y > 1e-3) {
|
|
26216
|
+
if (sz.x <= 1e-3) sz.x = size.x;
|
|
26217
|
+
if (sz.y <= 1e-3) sz.y = size.y;
|
|
26218
|
+
}
|
|
26219
|
+
const focus = { x: 0.5 * (bb.ll.x + bb.ur.x), y: 0.5 * (bb.ll.y + bb.ur.y) };
|
|
26220
|
+
const pageSize = { x: z * sz.x / z, y: z * sz.y / z };
|
|
26221
|
+
const ll = {
|
|
26222
|
+
x: focus.x + pageSize.x * (0 - 1 / 2),
|
|
26223
|
+
y: focus.y + pageSize.y * (0 - 1 / 2)
|
|
26224
|
+
};
|
|
26225
|
+
return { ll, ur: { x: ll.x + pageSize.x, y: ll.y + pageSize.y } };
|
|
26226
|
+
}
|
|
26112
26227
|
|
|
26113
26228
|
// src/gvc/anchor.ts
|
|
26114
26229
|
function attr(attrs, key) {
|
|
@@ -26620,10 +26735,22 @@ function renderClusterLabel(sg, renderer, job) {
|
|
|
26620
26735
|
renderOneLabel(sg.info.label, renderer, job, false);
|
|
26621
26736
|
}
|
|
26622
26737
|
|
|
26623
|
-
// src/
|
|
26624
|
-
function
|
|
26625
|
-
|
|
26738
|
+
// src/common/edge-in-box.ts
|
|
26739
|
+
function overlapLabel(lp, b) {
|
|
26740
|
+
const sx = lp.dimen.x / 2;
|
|
26741
|
+
const sy = lp.dimen.y / 2;
|
|
26742
|
+
const bb = {
|
|
26743
|
+
ll: { x: lp.pos.x - sx, y: lp.pos.y - sy },
|
|
26744
|
+
ur: { x: lp.pos.x + sx, y: lp.pos.y + sy }
|
|
26745
|
+
};
|
|
26746
|
+
return boxOverlap(b, bb);
|
|
26626
26747
|
}
|
|
26748
|
+
function edgeHasDrawableContent(e, clip) {
|
|
26749
|
+
const i = e.info;
|
|
26750
|
+
return i.spl !== void 0 || i.label !== void 0 && i.label.set && overlapLabel(i.label, clip) || i.xlabel !== void 0 || i.head_label !== void 0 || i.tail_label !== void 0;
|
|
26751
|
+
}
|
|
26752
|
+
|
|
26753
|
+
// src/gvc/emit-gates.ts
|
|
26627
26754
|
function nodeBBox(n) {
|
|
26628
26755
|
const { coord, lw, rw, ht } = n.info;
|
|
26629
26756
|
return {
|
|
@@ -26638,6 +26765,26 @@ function nodeInBox(n, job) {
|
|
|
26638
26765
|
};
|
|
26639
26766
|
return boxOverlap(nodeBBox(n), clip);
|
|
26640
26767
|
}
|
|
26768
|
+
function gvrenderComment(renderer, job, str) {
|
|
26769
|
+
if (str === void 0 || str.length === 0) return;
|
|
26770
|
+
renderer.comment?.(str, job);
|
|
26771
|
+
}
|
|
26772
|
+
function emitNodeComments(n, renderer, job) {
|
|
26773
|
+
gvrenderComment(renderer, job, n.name);
|
|
26774
|
+
gvrenderComment(renderer, job, nodeAttr(n, n.root, "comment"));
|
|
26775
|
+
}
|
|
26776
|
+
function emitEdgeComments(e, renderer, job) {
|
|
26777
|
+
if (!edgeHasDrawableContent(e, job.bb)) return;
|
|
26778
|
+
const kind = e.head.root.kind;
|
|
26779
|
+
const op = kind === "directed" || kind === "strict-directed" ? "->" : "--";
|
|
26780
|
+
gvrenderComment(renderer, job, e.tail.name + op + e.head.name);
|
|
26781
|
+
gvrenderComment(renderer, job, e.attrs.get("comment"));
|
|
26782
|
+
}
|
|
26783
|
+
|
|
26784
|
+
// src/gvc/device.ts
|
|
26785
|
+
function labelTextOf2(lp) {
|
|
26786
|
+
return lp?.text ?? null;
|
|
26787
|
+
}
|
|
26641
26788
|
function emitNodeBody(n, renderer, job) {
|
|
26642
26789
|
setHtmlAnchorObj(svgNodeId(n, job), labelTextOf2(n.info.label), job.obj ?? void 0);
|
|
26643
26790
|
setHtmlObjImgscale(nodeAttr(n, n.root, "imagescale"));
|
|
@@ -26653,6 +26800,7 @@ function renderNode(n, renderer, job, done) {
|
|
|
26653
26800
|
if (done.has(n)) return;
|
|
26654
26801
|
done.add(n);
|
|
26655
26802
|
if (!nodeInBox(n, job)) return;
|
|
26803
|
+
emitNodeComments(n, renderer, job);
|
|
26656
26804
|
const nodeStyle = nodeAttr(n, n.root, "style");
|
|
26657
26805
|
if (parseStyleFlags(nodeStyle).invis) return;
|
|
26658
26806
|
if (!isPointNode(n) && styleHasInvisibleAlias(nodeStyle)) return;
|
|
@@ -26678,6 +26826,7 @@ function setEdgePen(e, job) {
|
|
|
26678
26826
|
obj.rawStyle = styleTokens(e.attrs.get("style"));
|
|
26679
26827
|
}
|
|
26680
26828
|
function renderEdge(e, renderer, job) {
|
|
26829
|
+
emitEdgeComments(e, renderer, job);
|
|
26681
26830
|
const edgeStyle = e.attrs.get("style");
|
|
26682
26831
|
if (parseStyleFlags(edgeStyle).invis || styleHasInvisibleAlias(edgeStyle)) return;
|
|
26683
26832
|
const obj = createObjState(3 /* Edge */);
|
|
@@ -26791,7 +26940,9 @@ function render(ctx, g, format, inlineImages = false) {
|
|
|
26791
26940
|
job.bb = g.info.bb;
|
|
26792
26941
|
job.pad = parseGraphPad(g.attrs.get("pad"));
|
|
26793
26942
|
job.margin = parseGraphMargin(g.attrs.get("margin"));
|
|
26794
|
-
const
|
|
26943
|
+
const drawingSize = parseDrawingSize(g.attrs.get("size"));
|
|
26944
|
+
const z = initJobViewportZoom(job.bb, drawingSize, job.pad);
|
|
26945
|
+
job.clip = setupPageClip(job.bb, drawingSize, job.pad, z);
|
|
26795
26946
|
const drawingDpi = lateDouble(
|
|
26796
26947
|
g.attrs.get("dpi"),
|
|
26797
26948
|
lateDouble(g.attrs.get("resolution"), 0, 0),
|
|
@@ -31136,7 +31287,7 @@ function routeMultiRankEdgeFaithful(g, e) {
|
|
|
31136
31287
|
}
|
|
31137
31288
|
const segs = chainSegments(e);
|
|
31138
31289
|
if (segs.length === 0 || segs[segs.length - 1].head !== e.head) return null;
|
|
31139
|
-
return routeChainSegmented(g, segs[0], segs[segs.length - 1], segs);
|
|
31290
|
+
return routeChainSegmented(g, segs[0], segs[segs.length - 1], segs) ?? "lost";
|
|
31140
31291
|
}
|
|
31141
31292
|
function entryRunSegments(e) {
|
|
31142
31293
|
const segs = [e];
|
|
@@ -31208,7 +31359,10 @@ function routeBackEdge(e, _tailBox, _headBox, g) {
|
|
|
31208
31359
|
if (segs.length < 2 || segs[segs.length - 1].head !== e.tail) return;
|
|
31209
31360
|
const fwdEdge = makeFwdEdge(e);
|
|
31210
31361
|
const fwd = routeChainSegmented(g, segs[0], segs[segs.length - 1], segs);
|
|
31211
|
-
if (fwd === null)
|
|
31362
|
+
if (fwd === null) {
|
|
31363
|
+
e.info.lost = true;
|
|
31364
|
+
return;
|
|
31365
|
+
}
|
|
31212
31366
|
clipAndInstall(fwdEdge, fwdEdge.head, fwd, fwd.length, buildDotSinfo());
|
|
31213
31367
|
if (swapEndsP(e)) swapEdgeSpline(e);
|
|
31214
31368
|
}
|
|
@@ -31360,7 +31514,7 @@ function baseSplineForGroup(g, e0) {
|
|
|
31360
31514
|
const orig = resolveOrigEdge(e0);
|
|
31361
31515
|
const fe = isBackEdgeMember(orig) ? makeFwdEdge(orig) : orig;
|
|
31362
31516
|
const pts = routeRegularEdgeFaithful(g, fe);
|
|
31363
|
-
if (pts === "lost") return
|
|
31517
|
+
if (pts === "lost") return "lost";
|
|
31364
31518
|
return pts ?? routeMultiRankEdgeFaithful(g, fe);
|
|
31365
31519
|
}
|
|
31366
31520
|
function isBackEdgeMember(e) {
|
|
@@ -31389,6 +31543,10 @@ function routeParallelEdgeGroup(g, edges, multisep) {
|
|
|
31389
31543
|
return o.info.head_port?.defined || o.info.tail_port?.defined;
|
|
31390
31544
|
}) ?? edges[0];
|
|
31391
31545
|
const base = baseSplineForGroup(g, baseEdge);
|
|
31546
|
+
if (base === "lost") {
|
|
31547
|
+
for (const e of edges) resolveOrigEdge(e).info.lost = true;
|
|
31548
|
+
return;
|
|
31549
|
+
}
|
|
31392
31550
|
if (base === null) return;
|
|
31393
31551
|
if (cnt === 1) {
|
|
31394
31552
|
installShiftedEdge(edges[0], base);
|
|
@@ -34294,6 +34452,10 @@ function routeOneEdge(e, g) {
|
|
|
34294
34452
|
function routeFaithfulMultiRank(e, g) {
|
|
34295
34453
|
const pts = routeMultiRankEdgeFaithful(g, e);
|
|
34296
34454
|
if (pts === null) return false;
|
|
34455
|
+
if (pts === "lost") {
|
|
34456
|
+
e.info.lost = true;
|
|
34457
|
+
return true;
|
|
34458
|
+
}
|
|
34297
34459
|
clipAndInstall(e, e.head, pts, pts.length, buildDotSinfo());
|
|
34298
34460
|
return true;
|
|
34299
34461
|
}
|
|
@@ -34802,24 +34964,28 @@ function addSegment(segnum, seg2, tr, qs) {
|
|
|
34802
34964
|
swapSegEndpoints(s);
|
|
34803
34965
|
isSwapped = true;
|
|
34804
34966
|
}
|
|
34805
|
-
|
|
34806
|
-
|
|
34807
|
-
|
|
34808
|
-
|
|
34809
|
-
|
|
34967
|
+
const ctx = { s, seg: seg2, tr, qs, segnum, tribot: false, isSwapped };
|
|
34968
|
+
const tfirst = firstTrap(ctx);
|
|
34969
|
+
const tlast = lastTrap(ctx);
|
|
34970
|
+
if (threadSegment(ctx, tfirst, tlast) !== 0) return -1;
|
|
34971
|
+
seg2[segnum].isInserted = true;
|
|
34972
|
+
return 0;
|
|
34973
|
+
}
|
|
34974
|
+
function firstTrap(c) {
|
|
34975
|
+
if (!inserted(c.segnum, c.seg, c.isSwapped ? LASTPT : FIRSTPT)) {
|
|
34976
|
+
return insertV0(c.s, c.seg, c.tr, c.qs, c.segnum);
|
|
34810
34977
|
}
|
|
34811
|
-
|
|
34812
|
-
|
|
34813
|
-
|
|
34814
|
-
|
|
34815
|
-
|
|
34816
|
-
tlast = locateEndpoint(s.v1, s.v0, s.root1, seg2, qs);
|
|
34817
|
-
tribot = true;
|
|
34978
|
+
return locateEndpoint(c.s.v0, c.s.v1, c.s.root0, c.seg, c.qs);
|
|
34979
|
+
}
|
|
34980
|
+
function lastTrap(c) {
|
|
34981
|
+
if (!inserted(c.segnum, c.seg, c.isSwapped ? FIRSTPT : LASTPT)) {
|
|
34982
|
+
return insertV1(c.s, c.seg, c.tr, c.qs, c.segnum);
|
|
34818
34983
|
}
|
|
34819
|
-
|
|
34820
|
-
|
|
34984
|
+
c.tribot = true;
|
|
34985
|
+
return locateEndpoint(c.s.v1, c.s.v0, c.s.root1, c.seg, c.qs);
|
|
34821
34986
|
}
|
|
34822
|
-
function threadSegment(
|
|
34987
|
+
function threadSegment(c, tfirst, tlast) {
|
|
34988
|
+
const { s, seg: seg2, tr, qs, segnum, tribot, isSwapped } = c;
|
|
34823
34989
|
let tfirstr = INVALID_TRAP;
|
|
34824
34990
|
let tlastr = INVALID_TRAP;
|
|
34825
34991
|
let t = tfirst;
|
|
@@ -34846,17 +35012,20 @@ function threadSegment(s, seg2, tr, qs, segnum, tfirst, tlast, tribot, isSwapped
|
|
|
34846
35012
|
if (equalTo(tr[t].lo, tr[tlast].lo)) tlastr = tn;
|
|
34847
35013
|
const tSav = t;
|
|
34848
35014
|
const tnSav = tn;
|
|
35015
|
+
if (!isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
35016
|
+
console.error("trapezoid segment construction failed");
|
|
35017
|
+
return -1;
|
|
35018
|
+
}
|
|
34849
35019
|
t = advanceT(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot);
|
|
34850
35020
|
tr[tSav].rseg = segnum;
|
|
34851
35021
|
tr[tnSav].lseg = segnum;
|
|
34852
35022
|
}
|
|
34853
35023
|
mergeTrapezoids(segnum, tfirst, tlast, S_LEFT, tr, qs);
|
|
34854
35024
|
mergeTrapezoids(segnum, tfirstr, tlastr, S_RIGHT, tr, qs);
|
|
35025
|
+
return 0;
|
|
34855
35026
|
}
|
|
34856
35027
|
function advanceT(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot) {
|
|
34857
|
-
if (
|
|
34858
|
-
return INVALID_TRAP;
|
|
34859
|
-
} else if (isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
35028
|
+
if (isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
34860
35029
|
handleD0Only(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot);
|
|
34861
35030
|
return tr[t].d0;
|
|
34862
35031
|
} else if (!isValidTrap(tr[t].d0) && isValidTrap(tr[t].d1)) {
|
|
@@ -34876,33 +35045,16 @@ function findNewRoots(segnum, seg2, tr, qs) {
|
|
|
34876
35045
|
// src/ortho/trapezoid.ts
|
|
34877
35046
|
function constructTrapezoids(nseg, seg2, permute) {
|
|
34878
35047
|
const qs = [];
|
|
34879
|
-
const tr = [];
|
|
34880
|
-
tr.push({
|
|
34881
|
-
lseg: 0,
|
|
34882
|
-
rseg: 0,
|
|
34883
|
-
hi: { x: 0, y: 0 },
|
|
34884
|
-
lo: { x: 0, y: 0 },
|
|
34885
|
-
u0: 0,
|
|
34886
|
-
u1: 0,
|
|
34887
|
-
d0: 0,
|
|
34888
|
-
d1: 0,
|
|
34889
|
-
sink: 0,
|
|
34890
|
-
usave: 0,
|
|
34891
|
-
uside: 0,
|
|
34892
|
-
isValid: false
|
|
34893
|
-
});
|
|
35048
|
+
const tr = [sentinelTrap()];
|
|
34894
35049
|
let segi = 0;
|
|
34895
35050
|
const root = initQueryStructure(permute[segi++], seg2, tr, qs);
|
|
34896
|
-
|
|
34897
|
-
seg2[i].root0 = root;
|
|
34898
|
-
seg2[i].root1 = root;
|
|
34899
|
-
}
|
|
35051
|
+
seedRoots(nseg, seg2, root);
|
|
34900
35052
|
const logstar = mathLogstarN(nseg);
|
|
34901
35053
|
for (let h = 1; h <= logstar; h++) {
|
|
34902
35054
|
const lo = mathN(nseg, h - 1) + 1;
|
|
34903
35055
|
const hi = mathN(nseg, h);
|
|
34904
35056
|
for (let i = lo; i <= hi; i++) {
|
|
34905
|
-
addSegment(permute[segi++], seg2, tr, qs);
|
|
35057
|
+
if (addSegment(permute[segi++], seg2, tr, qs) !== 0) return [];
|
|
34906
35058
|
}
|
|
34907
35059
|
for (let i = 1; i <= nseg; i++) {
|
|
34908
35060
|
findNewRoots(i, seg2, tr, qs);
|
|
@@ -34910,10 +35062,32 @@ function constructTrapezoids(nseg, seg2, permute) {
|
|
|
34910
35062
|
}
|
|
34911
35063
|
const remaining = mathN(nseg, logstar) + 1;
|
|
34912
35064
|
for (let i = remaining; i <= nseg; i++) {
|
|
34913
|
-
addSegment(permute[segi++], seg2, tr, qs);
|
|
35065
|
+
if (addSegment(permute[segi++], seg2, tr, qs) !== 0) return [];
|
|
34914
35066
|
}
|
|
34915
35067
|
return tr;
|
|
34916
35068
|
}
|
|
35069
|
+
function sentinelTrap() {
|
|
35070
|
+
return {
|
|
35071
|
+
lseg: 0,
|
|
35072
|
+
rseg: 0,
|
|
35073
|
+
hi: { x: 0, y: 0 },
|
|
35074
|
+
lo: { x: 0, y: 0 },
|
|
35075
|
+
u0: 0,
|
|
35076
|
+
u1: 0,
|
|
35077
|
+
d0: 0,
|
|
35078
|
+
d1: 0,
|
|
35079
|
+
sink: 0,
|
|
35080
|
+
usave: 0,
|
|
35081
|
+
uside: 0,
|
|
35082
|
+
isValid: false
|
|
35083
|
+
};
|
|
35084
|
+
}
|
|
35085
|
+
function seedRoots(nseg, seg2, root) {
|
|
35086
|
+
for (let i = 1; i <= nseg; i++) {
|
|
35087
|
+
seg2[i].root0 = root;
|
|
35088
|
+
seg2[i].root1 = root;
|
|
35089
|
+
}
|
|
35090
|
+
}
|
|
34917
35091
|
function initQueryStructure(segnum, seg2, tr, qs) {
|
|
34918
35092
|
const s = seg2[segnum];
|
|
34919
35093
|
const i1 = newQNode(qs);
|
|
@@ -35217,10 +35391,18 @@ function partition(cells, bb) {
|
|
|
35217
35391
|
const hSeg = h.genSegments(cells, bb, false);
|
|
35218
35392
|
const hPerm = h.generateRandomOrdering(nsegs);
|
|
35219
35393
|
const hTr = constructTrapezoids(nsegs, hSeg, hPerm);
|
|
35394
|
+
if (hTr.length === 0) {
|
|
35395
|
+
console.error("horizontal trapezoid construction failed");
|
|
35396
|
+
return null;
|
|
35397
|
+
}
|
|
35220
35398
|
const hDecomp = h.monotonateTrapezoids(hTr, hSeg, false);
|
|
35221
35399
|
const vSeg = h.genSegments(cells, bb, true);
|
|
35222
35400
|
const vPerm = h.generateRandomOrdering(nsegs);
|
|
35223
35401
|
const vTr = constructTrapezoids(nsegs, vSeg, vPerm);
|
|
35402
|
+
if (vTr.length === 0) {
|
|
35403
|
+
console.error("vertical trapezoid construction failed");
|
|
35404
|
+
return null;
|
|
35405
|
+
}
|
|
35224
35406
|
const vDecomp = h.monotonateTrapezoids(vTr, vSeg, true);
|
|
35225
35407
|
const result = [];
|
|
35226
35408
|
for (const v of vDecomp) {
|
|
@@ -35229,7 +35411,7 @@ function partition(cells, bb) {
|
|
|
35229
35411
|
if (isect) result.push(isect);
|
|
35230
35412
|
}
|
|
35231
35413
|
}
|
|
35232
|
-
return result;
|
|
35414
|
+
return result.length === 0 ? null : result;
|
|
35233
35415
|
}
|
|
35234
35416
|
|
|
35235
35417
|
// src/ortho/rawgraph.ts
|
|
@@ -36077,6 +36259,7 @@ function mkMaze(g) {
|
|
|
36077
36259
|
UR: { x: BB.UR.x + MARGIN, y: BB.UR.y + MARGIN }
|
|
36078
36260
|
};
|
|
36079
36261
|
const rects = partition(gcells, BB);
|
|
36262
|
+
if (rects === null) return null;
|
|
36080
36263
|
const cells = rects.map((bb) => ({
|
|
36081
36264
|
flags: 0,
|
|
36082
36265
|
nedges: 0,
|
|
@@ -36558,6 +36741,24 @@ function buildSpline(e, rte, mp) {
|
|
|
36558
36741
|
pts.push({ ...p });
|
|
36559
36742
|
return pts;
|
|
36560
36743
|
}
|
|
36744
|
+
function ensureDummyNodes(sg, gstart) {
|
|
36745
|
+
while (sg.nodes.length < gstart + 2) {
|
|
36746
|
+
sg.nodes.push({
|
|
36747
|
+
nVal: 0,
|
|
36748
|
+
nIdx: 0,
|
|
36749
|
+
nDad: null,
|
|
36750
|
+
nEdge: null,
|
|
36751
|
+
nAdj: 0,
|
|
36752
|
+
saveNAdj: 0,
|
|
36753
|
+
cells: [null, null],
|
|
36754
|
+
adjEdgeList: [],
|
|
36755
|
+
index: sg.nodes.length,
|
|
36756
|
+
isVert: false,
|
|
36757
|
+
x: 0,
|
|
36758
|
+
y: 0
|
|
36759
|
+
});
|
|
36760
|
+
}
|
|
36761
|
+
}
|
|
36561
36762
|
function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
36562
36763
|
if (useLbls) {
|
|
36563
36764
|
console.warn(
|
|
@@ -36567,6 +36768,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
36567
36768
|
}
|
|
36568
36769
|
void useLbls;
|
|
36569
36770
|
const mp = mkMaze(g);
|
|
36771
|
+
if (mp === null) return -1;
|
|
36570
36772
|
const sg = mp.sg;
|
|
36571
36773
|
const es = g.edges.map((e) => ({ e, d: edgeLen(e) }));
|
|
36572
36774
|
gvQsort(es, edgeCmp);
|
|
@@ -36576,22 +36778,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
36576
36778
|
const pq = pqGenForGraph(sg);
|
|
36577
36779
|
const sn = sg.nodes[gstart];
|
|
36578
36780
|
const dn = sg.nodes[gstart + 1];
|
|
36579
|
-
|
|
36580
|
-
sg.nodes.push({
|
|
36581
|
-
nVal: 0,
|
|
36582
|
-
nIdx: 0,
|
|
36583
|
-
nDad: null,
|
|
36584
|
-
nEdge: null,
|
|
36585
|
-
nAdj: 0,
|
|
36586
|
-
saveNAdj: 0,
|
|
36587
|
-
cells: [null, null],
|
|
36588
|
-
adjEdgeList: [],
|
|
36589
|
-
index: sg.nodes.length,
|
|
36590
|
-
isVert: false,
|
|
36591
|
-
x: 0,
|
|
36592
|
-
y: 0
|
|
36593
|
-
});
|
|
36594
|
-
}
|
|
36781
|
+
ensureDummyNodes(sg, gstart);
|
|
36595
36782
|
for (let i = 0; i < nEdges; i++) {
|
|
36596
36783
|
const e = es[i].e;
|
|
36597
36784
|
const start = mp.gcells[g.nodes.indexOf(e.tail)];
|
|
@@ -36605,7 +36792,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
36605
36792
|
if (shortPath(pq, sg, dn, sn) !== 0) {
|
|
36606
36793
|
pqFree(pq);
|
|
36607
36794
|
freeMaze(mp);
|
|
36608
|
-
return;
|
|
36795
|
+
return 0;
|
|
36609
36796
|
}
|
|
36610
36797
|
routeList[i] = convertSPtoRoute(sg, sn, dn);
|
|
36611
36798
|
reset(sg);
|
|
@@ -36616,7 +36803,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
36616
36803
|
assignSegs(routeList, mp);
|
|
36617
36804
|
if (assignTracks(mp) !== 0) {
|
|
36618
36805
|
freeMaze(mp);
|
|
36619
|
-
return;
|
|
36806
|
+
return 0;
|
|
36620
36807
|
}
|
|
36621
36808
|
if (clipAndInstall2) {
|
|
36622
36809
|
for (let i = 0; i < nEdges; i++) {
|
|
@@ -36627,6 +36814,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
36627
36814
|
}
|
|
36628
36815
|
}
|
|
36629
36816
|
freeMaze(mp);
|
|
36817
|
+
return 0;
|
|
36630
36818
|
}
|
|
36631
36819
|
|
|
36632
36820
|
// src/layout/dot/ortho-adapter.ts
|
|
@@ -36697,7 +36885,7 @@ function installOrthoResult(oe, pts) {
|
|
|
36697
36885
|
clipAndInstall(origEdge, origEdge.head, pts, pts.length, ORTHO_SINFO);
|
|
36698
36886
|
}
|
|
36699
36887
|
function dispatchOrthoEdges(g, useLbls) {
|
|
36700
|
-
orthoEdges(
|
|
36888
|
+
return orthoEdges(
|
|
36701
36889
|
buildOrthoGraph(g),
|
|
36702
36890
|
useLbls,
|
|
36703
36891
|
(_og, oe, pts) => installOrthoResult(oe, pts)
|
|
@@ -37234,12 +37422,12 @@ function resetRW(g) {
|
|
|
37234
37422
|
}
|
|
37235
37423
|
function orthoDispatch(g) {
|
|
37236
37424
|
resetRW(g);
|
|
37425
|
+
let rc;
|
|
37237
37426
|
if (((g.root.info.has_labels ?? 0) & EDGE_LABEL) !== 0) {
|
|
37238
37427
|
setEdgeLabelPos(g);
|
|
37239
|
-
dispatchOrthoEdges(g, true);
|
|
37240
|
-
} else
|
|
37241
|
-
|
|
37242
|
-
}
|
|
37428
|
+
rc = dispatchOrthoEdges(g, true);
|
|
37429
|
+
} else rc = dispatchOrthoEdges(g, false);
|
|
37430
|
+
if (rc !== 0) return rc;
|
|
37243
37431
|
placePortLabels(g);
|
|
37244
37432
|
g.info.edgeLabelsDone = true;
|
|
37245
37433
|
return 0;
|
|
@@ -37895,7 +38083,7 @@ function computeStep2(bbs, margin) {
|
|
|
37895
38083
|
c -= W * H;
|
|
37896
38084
|
}
|
|
37897
38085
|
const r = Math.sqrt(b * b - 4 * a * c);
|
|
37898
|
-
const root =
|
|
38086
|
+
const root = d2i((-b + r) / (2 * a));
|
|
37899
38087
|
return root === 0 ? 1 : root;
|
|
37900
38088
|
}
|
|
37901
38089
|
function lineXDominant(st, ps) {
|
|
@@ -38041,7 +38229,7 @@ function fits2(x, y, info, ctx) {
|
|
|
38041
38229
|
}
|
|
38042
38230
|
const bb = ctx.bbs[info.index];
|
|
38043
38231
|
const LL = { x: cround(bb.ll.x), y: cround(bb.ll.y) };
|
|
38044
|
-
ctx.places[info.index] = { x: ctx.step
|
|
38232
|
+
ctx.places[info.index] = { x: Math.imul(ctx.step, x) - LL.x, y: Math.imul(ctx.step, y) - LL.y };
|
|
38045
38233
|
for (const c of info.cells) ctx.ps.add(c.x + x, c.y + y);
|
|
38046
38234
|
return true;
|
|
38047
38235
|
}
|
|
@@ -38527,7 +38715,7 @@ function dotLayoutComponent(sg, root) {
|
|
|
38527
38715
|
dotRank(sg);
|
|
38528
38716
|
dotMincross(sg);
|
|
38529
38717
|
dotPosition(sg);
|
|
38530
|
-
dotPhasePostNoFinish(sg);
|
|
38718
|
+
return dotPhasePostNoFinish(sg);
|
|
38531
38719
|
}
|
|
38532
38720
|
function mapClust(clone, origOf) {
|
|
38533
38721
|
const orig = origOf.get(clone);
|
|
@@ -38613,7 +38801,9 @@ function packComponentsClusterAware(root, comps, pinfo) {
|
|
|
38613
38801
|
}
|
|
38614
38802
|
function layoutAndPack(root, comps, pinfo, origOf) {
|
|
38615
38803
|
dotGraphInit(root);
|
|
38616
|
-
for (const sg of comps)
|
|
38804
|
+
for (const sg of comps) {
|
|
38805
|
+
if (dotLayoutComponent(sg, root) !== 0) return;
|
|
38806
|
+
}
|
|
38617
38807
|
packComponentsClusterAware(root, comps, pinfo);
|
|
38618
38808
|
copyClusterInfo(comps, root, origOf);
|
|
38619
38809
|
expandRootBbForClusters(root);
|
|
@@ -38645,11 +38835,13 @@ function dotPhaseInit(g) {
|
|
|
38645
38835
|
function dotPhasePostNoFinish(g) {
|
|
38646
38836
|
removeFill(g);
|
|
38647
38837
|
dotSameports(g);
|
|
38648
|
-
dotSplines(g);
|
|
38838
|
+
const r = dotSplines(g);
|
|
38839
|
+
if (r !== 0) return r;
|
|
38649
38840
|
if (mapbool2(g.attrs.get("compound") ?? g.root.attrs.get("compound"))) dotCompoundEdges(g);
|
|
38841
|
+
return 0;
|
|
38650
38842
|
}
|
|
38651
38843
|
function dotPhasePost(g) {
|
|
38652
|
-
dotPhasePostNoFinish(g);
|
|
38844
|
+
if (dotPhasePostNoFinish(g) !== 0) return;
|
|
38653
38845
|
gvPostprocess(g);
|
|
38654
38846
|
}
|
|
38655
38847
|
function graphPhase(g) {
|
|
@@ -41535,10 +41727,10 @@ function raySegIntersect(v, w, a, b) {
|
|
|
41535
41727
|
const mv = { x: w.x - v.x, y: w.y - v.y };
|
|
41536
41728
|
const lv = { x: b.x - a.x, y: b.y - a.y };
|
|
41537
41729
|
const ln = { x: -lv.y, y: lv.x };
|
|
41538
|
-
const lc = -(ln.x
|
|
41539
|
-
const dt = ln.x
|
|
41730
|
+
const lc = -fma(ln.x, a.x, ln.y * a.y);
|
|
41731
|
+
const dt = fma(ln.x, mv.x, ln.y * mv.y);
|
|
41540
41732
|
if (Math.abs(dt) < SMALL3) return null;
|
|
41541
|
-
const s = (ln.x
|
|
41733
|
+
const s = (fma(ln.x, v.x, ln.y * v.y) + lc) / dt;
|
|
41542
41734
|
return { x: v.x - s * mv.x, y: v.y - s * mv.y };
|
|
41543
41735
|
}
|
|
41544
41736
|
function triPoint(trip, vx, v, w) {
|
|
@@ -41556,36 +41748,44 @@ function ctrlPtIdx(v, ps) {
|
|
|
41556
41748
|
return -1;
|
|
41557
41749
|
}
|
|
41558
41750
|
var SEP = 15;
|
|
41751
|
+
function bisectorTarget(v, cosTheta, sinTheta) {
|
|
41752
|
+
return { x: fma(cosTheta, 100, v.x), y: fma(sinTheta, 100, v.y) };
|
|
41753
|
+
}
|
|
41754
|
+
function distFused(p, q) {
|
|
41755
|
+
const dx = p.x - q.x;
|
|
41756
|
+
const dy = p.y - q.y;
|
|
41757
|
+
return Math.sqrt(fma(dx, dx, dy * dy));
|
|
41758
|
+
}
|
|
41559
41759
|
function mkCtrlPts(s, mult, prev, v, nxt, trip) {
|
|
41560
41760
|
const idx = ctrlPtIdx(v, trip.ps);
|
|
41561
41761
|
if (idx < 0) return null;
|
|
41562
41762
|
const theta = bisect(prev, v, nxt);
|
|
41563
41763
|
let sinTheta = Math.sin(theta);
|
|
41564
41764
|
let cosTheta = Math.cos(theta);
|
|
41565
|
-
let w =
|
|
41765
|
+
let w = bisectorTarget(v, cosTheta, sinTheta);
|
|
41566
41766
|
if (idx > s) {
|
|
41567
41767
|
if (wind(prev, v, w) !== 1) {
|
|
41568
41768
|
sinTheta *= -1;
|
|
41569
41769
|
cosTheta *= -1;
|
|
41570
|
-
w =
|
|
41770
|
+
w = bisectorTarget(v, cosTheta, sinTheta);
|
|
41571
41771
|
}
|
|
41572
41772
|
} else if (wind(prev, v, w) !== -1) {
|
|
41573
41773
|
sinTheta *= -1;
|
|
41574
41774
|
cosTheta *= -1;
|
|
41575
|
-
w =
|
|
41775
|
+
w = bisectorTarget(v, cosTheta, sinTheta);
|
|
41576
41776
|
}
|
|
41577
41777
|
const q = triPoint(trip, idx, v, w);
|
|
41578
41778
|
if (q === null) return null;
|
|
41579
|
-
const d =
|
|
41779
|
+
const d = distFused(q, v);
|
|
41580
41780
|
const sep = d >= mult * SEP ? SEP : d / mult;
|
|
41581
41781
|
const ps = new Array(mult);
|
|
41582
41782
|
if (idx < s) {
|
|
41583
41783
|
for (let i = 0; i < mult; i++) {
|
|
41584
|
-
ps[i] = { x:
|
|
41784
|
+
ps[i] = { x: fma(i * sep, cosTheta, v.x), y: fma(i * sep, sinTheta, v.y) };
|
|
41585
41785
|
}
|
|
41586
41786
|
} else {
|
|
41587
41787
|
for (let i = 0; i < mult; i++) {
|
|
41588
|
-
ps[mult - i - 1] = { x:
|
|
41788
|
+
ps[mult - i - 1] = { x: fma(i * sep, cosTheta, v.x), y: fma(i * sep, sinTheta, v.y) };
|
|
41589
41789
|
}
|
|
41590
41790
|
}
|
|
41591
41791
|
return ps;
|
|
@@ -42019,7 +42219,7 @@ var ObstacleHelper = class {
|
|
|
42019
42219
|
};
|
|
42020
42220
|
function ellipseTangentSlope(a, b, p) {
|
|
42021
42221
|
const signY = p.y >= 0 ? 1 : -1;
|
|
42022
|
-
return -signY * (b * p.x) / (a * Math.sqrt(a
|
|
42222
|
+
return -signY * (b * p.x) / (a * Math.sqrt(fma(a, a, -(p.x * p.x))));
|
|
42023
42223
|
}
|
|
42024
42224
|
function circumscribedCorner(a, b, i, nsides) {
|
|
42025
42225
|
const angle0 = 2 * Math.PI * (i - 0.5) / nsides;
|
|
@@ -42028,8 +42228,8 @@ function circumscribedCorner(a, b, i, nsides) {
|
|
|
42028
42228
|
const p1 = { x: a * Math.cos(angle1), y: b * Math.sin(angle1) };
|
|
42029
42229
|
const m0 = ellipseTangentSlope(a, b, p0);
|
|
42030
42230
|
const m1 = ellipseTangentSlope(a, b, p1);
|
|
42031
|
-
const x = (m0
|
|
42032
|
-
const y =
|
|
42231
|
+
const x = (fms(p1.x, m1, fma(m0, p0.x, -p0.y)) + p1.y) / (m0 - m1);
|
|
42232
|
+
const y = fma(m0, x - p0.x, p0.y);
|
|
42033
42233
|
return { x, y };
|
|
42034
42234
|
}
|
|
42035
42235
|
function boxCornerMargin(j, m) {
|
|
@@ -46106,8 +46306,8 @@ function initItem(n, margin) {
|
|
|
46106
46306
|
let w2;
|
|
46107
46307
|
let h2;
|
|
46108
46308
|
if (margin.doAdd) {
|
|
46109
|
-
w2 =
|
|
46110
|
-
h2 =
|
|
46309
|
+
w2 = d2i(SCALE * (cround(width / 2 * POINTS_PER_INCH6) + margin.x));
|
|
46310
|
+
h2 = d2i(SCALE * (cround(height / 2 * POINTS_PER_INCH6) + margin.y));
|
|
46111
46311
|
} else {
|
|
46112
46312
|
w2 = cround(margin.x * SCALE2 * width * POINTS_PER_INCH6);
|
|
46113
46313
|
h2 = cround(margin.y * SCALE2 * height * POINTS_PER_INCH6);
|
|
@@ -50115,6 +50315,20 @@ function powerLawGraph(A3) {
|
|
|
50115
50315
|
}
|
|
50116
50316
|
return mask[1] > 0.8 * max && mask[1] > 0.3 * m;
|
|
50117
50317
|
}
|
|
50318
|
+
var PCP_COVARIANCE_LANES = 4;
|
|
50319
|
+
function pcpCovariance(n, dim, x, y) {
|
|
50320
|
+
const nUnfused = n - n % PCP_COVARIANCE_LANES;
|
|
50321
|
+
for (let i = 0; i < n; i++) {
|
|
50322
|
+
for (let k = 0; k < dim; k++) {
|
|
50323
|
+
for (let l = 0; l < dim; l++) {
|
|
50324
|
+
const a = x[i * dim + k];
|
|
50325
|
+
const b = x[i * dim + l];
|
|
50326
|
+
const acc = y[dim * k + l];
|
|
50327
|
+
y[dim * k + l] = i < nUnfused ? acc + a * b : fma(a, b, acc);
|
|
50328
|
+
}
|
|
50329
|
+
}
|
|
50330
|
+
}
|
|
50331
|
+
}
|
|
50118
50332
|
function pcpRotate(n, dim, x) {
|
|
50119
50333
|
const y = [0, 0, 0, 0];
|
|
50120
50334
|
const center = [0, 0];
|
|
@@ -50125,24 +50339,23 @@ function pcpRotate(n, dim, x) {
|
|
|
50125
50339
|
for (let i = 0; i < n; i++) {
|
|
50126
50340
|
for (let k = 0; k < dim; k++) x[dim * i + k] -= center[k];
|
|
50127
50341
|
}
|
|
50128
|
-
|
|
50129
|
-
for (let k = 0; k < dim; k++) {
|
|
50130
|
-
for (let l = 0; l < dim; l++) {
|
|
50131
|
-
y[dim * k + l] = fma(x[i * dim + k], x[i * dim + l], y[dim * k + l]);
|
|
50132
|
-
}
|
|
50133
|
-
}
|
|
50134
|
-
}
|
|
50342
|
+
pcpCovariance(n, dim, x, y);
|
|
50135
50343
|
const axis = [0, 1];
|
|
50136
50344
|
if (y[1] !== 0) {
|
|
50137
|
-
|
|
50345
|
+
const radicand = fma(
|
|
50346
|
+
y[3],
|
|
50347
|
+
y[3],
|
|
50348
|
+
fma(-2 * y[0], y[3], fma(y[0], y[0], 4 * y[1] * y[1]))
|
|
50349
|
+
);
|
|
50350
|
+
axis[0] = -(-y[0] + y[3] - Math.sqrt(radicand)) / (2 * y[1]);
|
|
50138
50351
|
axis[1] = 1;
|
|
50139
50352
|
}
|
|
50140
|
-
const dist4 = Math.sqrt(
|
|
50353
|
+
const dist4 = Math.sqrt(fma(axis[0], axis[0], 1));
|
|
50141
50354
|
axis[0] = axis[0] / dist4;
|
|
50142
50355
|
axis[1] = axis[1] / dist4;
|
|
50143
50356
|
for (let i = 0; i < n; i++) {
|
|
50144
|
-
const x0 = x[dim * i]
|
|
50145
|
-
const x1 = -x[dim * i]
|
|
50357
|
+
const x0 = fma(x[dim * i], axis[0], x[dim * i + 1] * axis[1]);
|
|
50358
|
+
const x1 = fma(-x[dim * i], axis[1], x[dim * i + 1] * axis[0]);
|
|
50146
50359
|
x[dim * i] = x0;
|
|
50147
50360
|
x[dim * i + 1] = x1;
|
|
50148
50361
|
}
|
|
@@ -50405,16 +50618,7 @@ function makeCData(dn) {
|
|
|
50405
50618
|
};
|
|
50406
50619
|
}
|
|
50407
50620
|
|
|
50408
|
-
// src/layout/circo/
|
|
50409
|
-
function blockGraph(allEdges3, sn) {
|
|
50410
|
-
const ns = new Set(sn.subGraph.nodes);
|
|
50411
|
-
for (const n of sn.subGraph.nodes) {
|
|
50412
|
-
for (const e of allEdges3) {
|
|
50413
|
-
if (e.tail === n && ns.has(e.head) && !sn.subGraph.edges.includes(e))
|
|
50414
|
-
sn.subGraph.edges.push(e);
|
|
50415
|
-
}
|
|
50416
|
-
}
|
|
50417
|
-
}
|
|
50621
|
+
// src/layout/circo/crossings.ts
|
|
50418
50622
|
function derivedOf(n) {
|
|
50419
50623
|
return n.info.alg?.derivedNode ?? null;
|
|
50420
50624
|
}
|
|
@@ -50425,27 +50629,51 @@ function closeOpenEdge(e, d, opened) {
|
|
|
50425
50629
|
}
|
|
50426
50630
|
return cross2;
|
|
50427
50631
|
}
|
|
50428
|
-
function
|
|
50632
|
+
function agfstedgeLists(edges) {
|
|
50633
|
+
const seq2 = /* @__PURE__ */ new Map();
|
|
50634
|
+
edges.forEach((e, i) => seq2.set(e, i));
|
|
50635
|
+
const by = (end) => (a, b) => end(a).orig.id - end(b).orig.id || seq2.get(a) - seq2.get(b);
|
|
50636
|
+
const out = /* @__PURE__ */ new Map();
|
|
50637
|
+
const inn = /* @__PURE__ */ new Map();
|
|
50429
50638
|
for (const e of edges) {
|
|
50430
|
-
|
|
50431
|
-
|
|
50432
|
-
|
|
50433
|
-
|
|
50639
|
+
out.set(e.tail, [...out.get(e.tail) ?? [], e]);
|
|
50640
|
+
inn.set(e.head, [...inn.get(e.head) ?? [], e]);
|
|
50641
|
+
}
|
|
50642
|
+
const lists = /* @__PURE__ */ new Map();
|
|
50643
|
+
for (const d of /* @__PURE__ */ new Set([...out.keys(), ...inn.keys()])) {
|
|
50644
|
+
const o = (out.get(d) ?? []).sort(by((e) => e.head));
|
|
50645
|
+
const i = (inn.get(d) ?? []).sort(by((e) => e.tail));
|
|
50646
|
+
lists.set(d, [...o, ...i]);
|
|
50434
50647
|
}
|
|
50648
|
+
return lists;
|
|
50435
50649
|
}
|
|
50436
50650
|
function countCrossings(list, edges) {
|
|
50437
50651
|
for (const e of edges) e.order = 0;
|
|
50438
|
-
const
|
|
50652
|
+
const incident = agfstedgeLists(edges);
|
|
50653
|
+
const opened = /* @__PURE__ */ new Map();
|
|
50439
50654
|
let crossings = 0;
|
|
50440
50655
|
let order = 1;
|
|
50441
50656
|
for (const n of list) {
|
|
50442
50657
|
const d = derivedOf(n);
|
|
50443
50658
|
if (!d) continue;
|
|
50444
|
-
|
|
50445
|
-
|
|
50446
|
-
|
|
50659
|
+
const es = incident.get(d) ?? [];
|
|
50660
|
+
crossings += closeEdgesAt(d, es, opened);
|
|
50661
|
+
for (const e of es) {
|
|
50662
|
+
if (e.order === 0) {
|
|
50663
|
+
e.order = order;
|
|
50664
|
+
opened.set(e, d);
|
|
50665
|
+
}
|
|
50447
50666
|
}
|
|
50448
|
-
|
|
50667
|
+
order++;
|
|
50668
|
+
}
|
|
50669
|
+
return crossings;
|
|
50670
|
+
}
|
|
50671
|
+
function closeEdgesAt(d, es, opened) {
|
|
50672
|
+
let crossings = 0;
|
|
50673
|
+
for (const e of es) {
|
|
50674
|
+
if (e.order === 0) continue;
|
|
50675
|
+
crossings += closeOpenEdge(e, d, opened.keys());
|
|
50676
|
+
if (opened.get(e) === d) opened.delete(e);
|
|
50449
50677
|
}
|
|
50450
50678
|
return crossings;
|
|
50451
50679
|
}
|
|
@@ -50498,6 +50726,17 @@ function spanIncident(dn, edges, ord, seq2) {
|
|
|
50498
50726
|
const inn = edges.filter((e) => e.head === dn).sort((a, b) => (ord.get(a.tail) ?? 0) - (ord.get(b.tail) ?? 0) || (seq2.get(a) ?? 0) - (seq2.get(b) ?? 0));
|
|
50499
50727
|
return [...out, ...inn];
|
|
50500
50728
|
}
|
|
50729
|
+
|
|
50730
|
+
// src/layout/circo/blockpath.ts
|
|
50731
|
+
function blockGraph(allEdges3, sn) {
|
|
50732
|
+
const ns = new Set(sn.subGraph.nodes);
|
|
50733
|
+
for (const n of sn.subGraph.nodes) {
|
|
50734
|
+
for (const e of allEdges3) {
|
|
50735
|
+
if (e.tail === n && ns.has(e.head) && !sn.subGraph.edges.includes(e))
|
|
50736
|
+
sn.subGraph.edges.push(e);
|
|
50737
|
+
}
|
|
50738
|
+
}
|
|
50739
|
+
}
|
|
50501
50740
|
function dfsSpan(sn, map, edges, ord, seq2) {
|
|
50502
50741
|
sn.visited = true;
|
|
50503
50742
|
for (const e of spanIncident(sn.dn, edges, ord, seq2)) {
|
|
@@ -51976,17 +52215,30 @@ function renderEdgeLabels(e, renderer, job) {
|
|
|
51976
52215
|
}
|
|
51977
52216
|
function emitEdgeLabel(lp, id, hs, renderer, job, spl, emitState) {
|
|
51978
52217
|
if (!lp?.set) return;
|
|
51979
|
-
|
|
51980
|
-
|
|
51981
|
-
|
|
51982
|
-
|
|
51983
|
-
|
|
51984
|
-
|
|
51985
|
-
|
|
51986
|
-
|
|
52218
|
+
withObjEmitState(job, emitState ?? 11 /* ELabel */, () => {
|
|
52219
|
+
const open = hs.url !== null || hs.explicit;
|
|
52220
|
+
if (open) openAnchorWith(renderer, job, hs.url, hs.tooltip, hs.target, id);
|
|
52221
|
+
const savedOverride = job.labelEmitOverride;
|
|
52222
|
+
if (emitState !== void 0) job.labelEmitOverride = emitState;
|
|
52223
|
+
try {
|
|
52224
|
+
renderOneLabel(lp, renderer, job);
|
|
52225
|
+
} finally {
|
|
52226
|
+
job.labelEmitOverride = savedOverride;
|
|
52227
|
+
}
|
|
52228
|
+
if (spl) emitAttachment(lp, spl, renderer, job);
|
|
52229
|
+
if (open) renderer.endAnchor?.(job);
|
|
52230
|
+
});
|
|
52231
|
+
}
|
|
52232
|
+
function withObjEmitState(job, lkind, fn) {
|
|
52233
|
+
const obj = job.obj;
|
|
52234
|
+
if (obj === null) {
|
|
52235
|
+
fn();
|
|
52236
|
+
return;
|
|
51987
52237
|
}
|
|
51988
|
-
|
|
51989
|
-
|
|
52238
|
+
const oldEmitState = obj.emitState;
|
|
52239
|
+
obj.emitState = lkind;
|
|
52240
|
+
fn();
|
|
52241
|
+
obj.emitState = oldEmitState;
|
|
51990
52242
|
}
|
|
51991
52243
|
function emitAttachment(lp, spl, renderer, job) {
|
|
51992
52244
|
if (!lp?.set) return;
|
|
@@ -53572,6 +53824,7 @@ var DotWriterBase = class {
|
|
|
53572
53824
|
|
|
53573
53825
|
// src/render/dot/edge-draw.ts
|
|
53574
53826
|
var DEFAULT_COLOR5 = "black";
|
|
53827
|
+
var DEFAULT_LINE_STYLE = ["solid", "setlinewidth(1)"];
|
|
53575
53828
|
function emitArrowOp(buf, op, pen) {
|
|
53576
53829
|
switch (op.kind) {
|
|
53577
53830
|
case "polygon":
|
|
@@ -53595,6 +53848,25 @@ function emitArrowOp(buf, op, pen) {
|
|
|
53595
53848
|
var EdgeDrawBase = class extends DotWriterBase {
|
|
53596
53849
|
/** setlinewidth state per emit_state. @see gvrender_core_dot.c penwidth[] */
|
|
53597
53850
|
penwidth = new Array(12).fill(1);
|
|
53851
|
+
/**
|
|
53852
|
+
* emit_attachment's draw calls (decorate=true): gvrender_set_style with the
|
|
53853
|
+
* default line style sets the obj's rawstyle/pen/penwidth (setlinewidth 1),
|
|
53854
|
+
* gvrender_set_pencolor sets the pen to the label fontcolor (first entry of
|
|
53855
|
+
* a color list), then gvrender_polyline → xdot_polyline emits the style ops
|
|
53856
|
+
* (`S 5 -solid`; setlinewidth is filtered), the pen color and `L 3`.
|
|
53857
|
+
* @see lib/common/emit.c:emit_attachment (1886-1893)
|
|
53858
|
+
* @see lib/gvc/gvrender.c:gvrender_set_style / gvrender_set_pencolor
|
|
53859
|
+
*/
|
|
53860
|
+
attachmentPolyline(pts, pencolor, job) {
|
|
53861
|
+
const obj = job.obj;
|
|
53862
|
+
if (obj !== null) {
|
|
53863
|
+
obj.rawStyle = [...DEFAULT_LINE_STYLE];
|
|
53864
|
+
obj.pen = 3 /* Solid */;
|
|
53865
|
+
obj.penWidth = 1;
|
|
53866
|
+
obj.penColor = resolveRenderColor(pencolor.split(":")[0]);
|
|
53867
|
+
}
|
|
53868
|
+
this.polyline(pts, job);
|
|
53869
|
+
}
|
|
53598
53870
|
/**
|
|
53599
53871
|
* The plain single-colour spline branch of beginEdge — lifted verbatim so the
|
|
53600
53872
|
* four-way spline-kind chain above stays readable; no branch was reordered or
|
|
@@ -54134,19 +54406,6 @@ function emitMulticolorArrows(e, job, headColor, tailColor) {
|
|
|
54134
54406
|
emitArrowOps(headOps, headColor, job, pw, colorOpacity(resolveRenderColor(headColor)));
|
|
54135
54407
|
}
|
|
54136
54408
|
}
|
|
54137
|
-
function overlapLabel(lp, b) {
|
|
54138
|
-
const sx = lp.dimen.x / 2;
|
|
54139
|
-
const sy = lp.dimen.y / 2;
|
|
54140
|
-
const bb = {
|
|
54141
|
-
ll: { x: lp.pos.x - sx, y: lp.pos.y - sy },
|
|
54142
|
-
ur: { x: lp.pos.x + sx, y: lp.pos.y + sy }
|
|
54143
|
-
};
|
|
54144
|
-
return boxOverlap(b, bb);
|
|
54145
|
-
}
|
|
54146
|
-
function edgeHasDrawableContent(e, clip) {
|
|
54147
|
-
const i = e.info;
|
|
54148
|
-
return i.spl !== void 0 || i.label !== void 0 && i.label.set && overlapLabel(i.label, clip) || i.xlabel !== void 0 || i.head_label !== void 0 || i.tail_label !== void 0;
|
|
54149
|
-
}
|
|
54150
54409
|
var SvgRenderer = class {
|
|
54151
54410
|
type = "svg";
|
|
54152
54411
|
/** @see plugin/core/gvplugin_core.c registration table */
|
|
@@ -54303,6 +54562,7 @@ function createSvgRenderer() {
|
|
|
54303
54562
|
var XDOT_PARSE_ERROR = 1;
|
|
54304
54563
|
|
|
54305
54564
|
// src/xdot/parse.ts
|
|
54565
|
+
var ULONG_MAX = 0xffffffffffffffffn;
|
|
54306
54566
|
var XdotParser = class _XdotParser {
|
|
54307
54567
|
static isWs(c) {
|
|
54308
54568
|
return c === " " || c === " " || c === "\n" || c === "\r";
|
|
@@ -54346,12 +54606,23 @@ var XdotParser = class _XdotParser {
|
|
|
54346
54606
|
if (i === digStart) return null;
|
|
54347
54607
|
return { val: parseInt(s.slice(start, i), 10), pos: i };
|
|
54348
54608
|
}
|
|
54609
|
+
/**
|
|
54610
|
+
* strtoul(s, &endp, 10) cast to unsigned int: optional sign, a leading "-"
|
|
54611
|
+
* negates modulo 2^64, magnitude overflow saturates to ULONG_MAX, and the
|
|
54612
|
+
* result keeps the low 32 bits.
|
|
54613
|
+
* @see lib/xdot/xdot.c:parseUInt
|
|
54614
|
+
*/
|
|
54349
54615
|
static parseUInt_(s, pos) {
|
|
54350
54616
|
const i = _XdotParser.skipWs(s, pos);
|
|
54351
|
-
|
|
54352
|
-
const
|
|
54617
|
+
let start = i;
|
|
54618
|
+
const negative = i < s.length && s[i] === "-";
|
|
54619
|
+
if (i < s.length && (s[i] === "-" || s[i] === "+")) start++;
|
|
54620
|
+
const end = _XdotParser.consumeDigits(s, start);
|
|
54353
54621
|
if (end === start) return null;
|
|
54354
|
-
|
|
54622
|
+
const mag = BigInt(s.slice(start, end));
|
|
54623
|
+
const clamped = mag > ULONG_MAX ? ULONG_MAX : mag;
|
|
54624
|
+
const wrapped = negative && mag <= ULONG_MAX ? BigInt.asUintN(64, -clamped) : clamped;
|
|
54625
|
+
return { val: Number(BigInt.asUintN(32, wrapped)), pos: end };
|
|
54355
54626
|
}
|
|
54356
54627
|
static parseRect(s, pos) {
|
|
54357
54628
|
const rx = _XdotParser.parseReal(s, pos);
|
|
@@ -54448,7 +54719,7 @@ var XdotParser = class _XdotParser {
|
|
|
54448
54719
|
if (!rx1) return null;
|
|
54449
54720
|
const ry1 = _XdotParser.parseReal(s, rx1.pos);
|
|
54450
54721
|
if (!ry1) return null;
|
|
54451
|
-
const rn = _XdotParser.
|
|
54722
|
+
const rn = _XdotParser.parseUInt_(s, ry1.pos);
|
|
54452
54723
|
if (!rn) return null;
|
|
54453
54724
|
const rs = _XdotParser.parseStops(s, rn.pos, rn.val);
|
|
54454
54725
|
if (!rs) return null;
|
|
@@ -54467,7 +54738,7 @@ var XdotParser = class _XdotParser {
|
|
|
54467
54738
|
if (!ry1) return null;
|
|
54468
54739
|
const rr1 = _XdotParser.parseReal(s, ry1.pos);
|
|
54469
54740
|
if (!rr1) return null;
|
|
54470
|
-
const rn = _XdotParser.
|
|
54741
|
+
const rn = _XdotParser.parseUInt_(s, rr1.pos);
|
|
54471
54742
|
if (!rn) return null;
|
|
54472
54743
|
const rs = _XdotParser.parseStops(s, rn.pos, rn.val);
|
|
54473
54744
|
if (!rs) return null;
|