Commit graph

260 commits

Author SHA1 Message Date
Anmol Sethi
88b885a753
d2ir: Ensure filters pass before setting primary 2023-08-30 00:37:03 -07:00
Anmol Sethi
47d671209a
d2ir: More alex fixes 2023-08-30 00:37:03 -07:00
Anmol Sethi
eed3f7eb21
d2ir: Many more glob fixes 2023-08-30 00:37:03 -07:00
Anmol Sethi
57ffc8dbbd
d2ir: Filter glob creation of edges with edge index where appropriate
On query globs, filtering without the edge index overfilters as we only match
one of the edge instead all of them.
2023-08-30 00:37:03 -07:00
Anmol Sethi
2efd87f059
d2ir: Add label filter exception for edges too 2023-08-30 00:37:03 -07:00
Anmol Sethi
1800ae3448
d2ir: Add exception for &label filter 2023-08-30 00:37:03 -07:00
Anmol Sethi
976ec17476
d2ir: Prevent globs from overriding any fields set by non globs 2023-08-30 00:37:03 -07:00
Anmol Sethi
aba28d365a
d2ir: More alixander identified lazy glob bugs 2023-08-30 00:37:03 -07:00
Anmol Sethi
d90f8253df
d2ir: Fix lazy globs being applied in reverse 2023-08-30 00:37:03 -07:00
Anmol Sethi
8455a7da8d
d2ir: Fix another lazy glob bug found by Alex 2023-08-30 00:37:03 -07:00
Anmol Sethi
a24716d1f1
d2ir: Fix infinite loop in triple globs 2023-08-30 00:37:03 -07:00
Anmol Sethi
4090e780f8
d2ir: Prevent triple globs from applying at a board root 2023-08-30 00:37:03 -07:00
Anmol Sethi
89b400b8f1
d2ir: Alixander review lazy glob fixes 2023-08-30 00:37:03 -07:00
Anmol Sethi
507b2d622e
d2ir: Add IDA support for edges
Not perfectly robust but good enough for now without massive refactor.
2023-08-30 00:37:03 -07:00
Anmol Sethi
bb6b176dee
d2ir: Implement lazy globs and triple glob
This finishes up the globs implementation!

See tests for what I mean by lazy globs and what the triple glob does.
2023-08-30 00:37:03 -07:00
Alexander Wang
5afc712455
dont modify ast when modifying links 2023-08-13 10:15:13 -07:00
Anmol Sethi
203953723e
d2parser: Autodetect UTF-16 based on BOM
Turns out I was wrong this is safe.
2023-08-02 11:10:24 -07:00
Anmol Sethi
b81da1ee62
d2parser: Support reading utf16 files 2023-08-02 09:56:35 -07:00
Anmol Sethi
d0d3ebe17e
d2ir: Fix filters on nested fields
See test on edges
2023-07-30 13:16:56 -07:00
Anmol Sethi
7ae2d78834
d2ir: Add filtering on class arrays 2023-07-30 12:41:29 -07:00
Anmol Sethi
6b73a61bd2
d2ir: Add filter error tests 2023-07-30 12:41:29 -07:00
Anmol Sethi
43166110b8
d2ir: Add single field filtering
See test.
2023-07-30 12:41:29 -07:00
Anmol Sethi
0002817b0a
d2ir: Implement ampersand filters 2023-07-30 12:41:29 -07:00
Anmol Sethi
6ca36e6b0c
d2ir: Glob review fixes 2023-07-30 12:41:15 -07:00
Anmol Sethi
6fdf4b07a5
d2ir: Make double globs work sanely across boards
See test.
2023-07-30 03:15:33 -07:00
Anmol Sethi
9c37d6dcfb
d2ir: Make globs more ergonomic in two specific edge cases
Were identified from @alixander writing documentation.
2023-07-30 01:27:49 -07:00
Anmol Sethi
bd2c94f7a8
d2ir: Make suffix globs case insensitive too 2023-07-29 21:33:41 -07:00
Anmol Sethi
63efa12160
d2ir: Fix globs to not match reserved 2023-07-29 16:57:25 -07:00
Anmol Sethi
82663f0445
d2ir: Explain EnsureField misnomer 2023-07-29 16:57:25 -07:00
Anmol Sethi
ff47a00abf
d2ir: Make globs case insensitive to match the rest of the language
note: I personally wish to change the language and make it case sensitive.
2023-07-29 16:57:25 -07:00
Anmol Sethi
95667750e0
d2ir: Fix and add test for glob-edge-glob-index 2023-07-29 16:57:25 -07:00
Anmol Sethi
b119174a09
d2ir: Fix implementation of Map.createEdge 2023-07-29 16:57:25 -07:00
Anmol Sethi
0d2b0aa99c
d2ir: Implement edge index globs 2023-07-29 16:57:25 -07:00
Anmol Sethi
d9b4b952ee
d2ir: Implement double globs 2023-07-29 16:57:25 -07:00
Anmol Sethi
1217ff35a7
d2ir: Add single glob matching to edges and make it work fully recursively 2023-07-29 16:57:25 -07:00
Anmol Sethi
210816a42b
d2ir: Fix _ with null 2023-07-29 16:57:25 -07:00
Anmol Sethi
359976e5d4
d2ir: Add single level field glob patterns 2023-07-29 16:57:25 -07:00
Alexander Wang
64fcb02ae3
fix nested links imported 2023-07-26 23:10:41 -07:00
Alexander Wang
45b396c894
config vars 2023-07-20 16:08:08 -07:00
Anmol Sethi
a79e963f3e
d2ir: Fix variables to passthrough primary type
If the variable is a number it should be parsed as a number and not coerced into a string.
See test change.
2023-07-18 14:58:22 -07:00
Alexander Wang
d275a45033
allow edges in vars 2023-07-13 14:47:32 -07:00
Alexander Wang
e95f61985e
fix import test 2023-07-13 14:41:06 -07:00
Alexander Wang
f12f9ca69d
move edge check 2023-07-13 14:34:33 -07:00
Alexander Wang
29af92310b
fix no-primary-composite 2023-07-13 14:11:14 -07:00
Alexander Wang
fb0c0d20ed
nested null 2023-07-13 10:22:37 -07:00
Alexander Wang
a54907e28a
remove overlayVars 2023-07-13 10:16:41 -07:00
Alexander Wang
eba41af47d
use scalarstring 2023-07-13 10:13:26 -07:00
Alexander Wang
780345beeb
fix double quote primary 2023-07-13 10:11:08 -07:00
Alexander Wang
ffdb5121f4
err msg 2023-07-13 08:37:22 -07:00
Alexander Wang
06ed41ecae
remove dead code 2023-07-13 08:36:28 -07:00
Alexander Wang
ef11d47fc8
null 2023-07-13 08:35:16 -07:00
Alexander Wang
98f79e2ba5
arrays 2023-07-12 22:20:55 -07:00
Alexander Wang
4b7b636657
spread 2023-07-12 14:53:28 -07:00
Alexander Wang
85bfad19a6
compile composites 2023-07-12 11:55:58 -07:00
Alexander Wang
d06e395e8d
overlayVars refactor 2023-07-12 10:27:32 -07:00
Alexander Wang
63dbaf0935
pr changes 2023-07-11 23:26:06 -07:00
Alexander Wang
67a06b6557
var-in-var 2023-07-11 18:05:03 -07:00
Alexander Wang
5d4d9c5c17
import tests 2023-07-11 17:37:39 -07:00
Alexander Wang
af69e6f626
edge cases 2023-07-11 17:33:01 -07:00
Alexander Wang
92d87b553f
new implementation 2023-07-11 17:19:34 -07:00
Alexander Wang
85cf491d74
quotes 2023-07-11 14:56:09 -07:00
Alexander Wang
a6125c46ec
cleanup 2023-07-11 14:01:35 -07:00
Alexander Wang
78e9e4565e
only coalesce if subbed 2023-07-11 13:52:29 -07:00
Alexander Wang
b193b9be8a
cleanup 2023-07-11 13:44:00 -07:00
Alexander Wang
741a9aa306
cleanup 2023-07-11 13:40:44 -07:00
Alexander Wang
090d10e9ca
handle interpolation 2023-07-11 13:32:07 -07:00
Alexander Wang
e7e2566564
save 2023-07-11 11:19:50 -07:00
Alexander Wang
08cc907f07
more test 2023-07-10 22:22:04 -07:00
Alexander Wang
fd70b5ef46
layers work 2023-07-10 21:32:30 -07:00
Alexander Wang
05802edb07
edge label working 2023-07-10 21:18:18 -07:00
Alexander Wang
c9793b9a87
label works 2023-07-10 19:24:21 -07:00
Alexander Wang
db051a95b6
pr fixes 2023-07-03 15:58:22 -07:00
Alexander Wang
7973e4927d
change test expected behavior 2023-06-27 13:36:33 -07:00
Alexander Wang
0749d4fb41
attribute 2023-06-26 12:15:24 -07:00
Alexander Wang
1acc3d685a
new implementation 2023-06-26 11:57:18 -07:00
Alexander Wang
5be1f6c187
cleanup 2023-06-26 10:39:38 -07:00
Alexander Wang
09d1ec6314
reimplement 2023-06-25 23:10:56 -07:00
Alexander Wang
6749115ce2
reappear works 2023-06-25 18:59:53 -07:00
Alexander Wang
16a879e05b
cleanup 2023-06-20 18:56:04 -07:00
Alexander Wang
9351a2e2cd
cleanup 2023-06-20 18:56:04 -07:00
Alexander Wang
21d2c44413
set wip 2023-06-20 18:56:03 -07:00
Alexander Wang
1ff119d803
baseAST 2023-06-20 18:56:02 -07:00
Alexander Wang
64daf4643f
use right AST 2023-06-16 16:23:57 -07:00
Anmol Sethi
1f891a3c9e
d2ir: Fix for windows
Closes #1388
2023-06-09 19:45:31 -07:00
Alexander Wang
538812f928
Merge branch 'master' into imports 2023-06-07 15:38:52 -07:00
Alexander Wang
424f671d54
add test exercising steps/scenarios 2023-06-06 22:52:17 -07:00
Anmol Sethi
986f069c18
d2ir: Fix link paths to be unquoted strings
Allows for simpler manipulation.
2023-06-06 22:37:56 -07:00
Alexander Wang
8857f46110
add failing test 2023-06-06 22:28:32 -07:00
Anmol Sethi
42cf8bed42
d2ir: Update cyclic import test 2023-06-06 22:16:14 -07:00
Anmol Sethi
7d9f8b6c08
d2ir: Update links after import 2023-06-06 22:13:49 -07:00
Anmol Sethi
47018488aa
d2ir: Fix pushImportStack 2023-06-06 17:14:49 -07:00
Anmol Sethi
7f0450121a
d2ir: Handle imported scenarios/steps/links 2023-06-06 16:49:12 -07:00
Anmol Sethi
a5d3cc1429
d2parser: Parse and format @../file imports correctly 2023-06-06 16:15:01 -07:00
Anmol Sethi
de0a863e9f
d2: Fix nested import spread ghost container bug 2023-06-06 15:09:27 -07:00
Anmol Sethi
10c6d2af71
d2parser: Fix bad import key panic 2023-06-06 14:01:32 -07:00
Anmol Sethi
111759f6bd
d2cli: Pass path for imports correctly 2023-06-06 13:44:41 -07:00
Anmol Sethi
ad21f1fbea
d2ir: Add more import error tests 2023-06-06 13:17:29 -07:00
Anmol Sethi
42706f8b64
d2ir: More import tests 2023-06-06 13:07:30 -07:00
Anmol Sethi
9f0c24f5d7
fmt 2023-06-04 23:32:14 -07:00
Anmol Sethi
2fcc9ed140
d2ir: Compile imports
Works as so:

index.d2:
```d2
x: @x
```

x.d2:
```d2
label: meow
shape: circle
```

TODO:

- [ ] Correctly import into fields by handling the scenarios/steps overlay.
      - And links.
- [ ] Test every kind of import.
2023-06-04 23:31:18 -07:00
Alexander Wang
69f40ae9fb
fix 2023-05-31 23:28:33 -07:00
Alexander Wang
e998a95b96
d2ir: prevent illegal non-tail keywords 2023-05-31 23:04:09 -07:00
Alexander Wang
595fafc4c8
fix class
style validation

changelog
2023-04-27 11:48:07 -07:00
Alexander Wang
16478fd894
fix classes panic 2023-04-26 12:40:42 -07:00
Alexander Wang
e0b4c09df1
d2oracle: don't modify classes 2023-04-18 20:25:07 -07:00
Alexander Wang
305c72d239
implement classes 2023-04-07 09:57:51 -07:00
Alexander Wang
754e0ece80
use helpers 2023-04-06 21:02:12 -07:00
Alexander Wang
a2cffc9341
fix inheritence bug 2023-04-05 19:29:08 -07:00
Alexander Wang
60c912c605
compile reserved keys to lowercase in IR 2023-03-06 16:38:13 -08:00
Alexander Wang
81ce1f8209
pr feedback 2023-03-02 18:25:14 -08:00
Alexander Wang
d8b1e65386
disallow referring to root 2023-03-02 18:01:51 -08:00
Alexander Wang
78e6f3fc06
pr feedback 2023-03-02 17:56:32 -08:00
Alexander Wang
e504aca6d0
comment 2023-03-01 15:49:47 -08:00
Alexander Wang
85985bbaf5
ok 2023-03-01 15:38:02 -08:00
Alexander Wang
3a9745974c
save 2023-03-01 14:53:58 -08:00
Anmol Sethi
e4fac7840f
cli: Improve multiboard output
- Boards with subboards are now selfcontained folders with index.svg/png as
  the root board render.
- Boards that are only containers of other boards are not rendered. For example a
  scenario with no modifications and only steps only has its steps
  rendered.
- Boards with sibling boards of another type are rendered under a
  subdirectory indicating their type to separate them. For example a
  board with layers and scenarios has its layers rendered into subfolder
  layers and scenarios into subfolder scenarios.

cc @berniexie see BoardContainer field on d2target.Board for the field
you were looking for to skip renders for PDFs too.
2023-02-27 13:50:03 -08:00
Anmol Sethi
903bf7e206
Ignore BoardKeywords in d2graph and change d2ir.IDA to return from nearest board 2023-02-27 11:52:55 -08:00
Alexander Wang
a027564100
update 2023-02-22 16:21:16 -08:00
Alexander Wang
691b45733d
update 2023-02-22 14:59:05 -08:00
Alexander Wang
a0f8dbee22
fix steps panic 2023-02-22 13:43:24 -08:00
Alexander Wang
b41baddcee
pr comments 2023-02-14 21:26:29 -08:00
Alexander Wang
34b839c7bd
combine resolveUnderscore and trimCommon 2023-02-14 21:06:57 -08:00
Alexander Wang
40b4879f47
fix underscore bug in compiler 2023-02-14 16:45:55 -08:00
Alexander Wang
ef1dc4612d
check root another way 2023-02-09 19:02:21 -08:00
Anmol Sethi
8f58e4ca54
d2ir: Review fixes #714 2023-02-02 10:31:09 -08:00
Anmol Sethi
f056700152
d2ir: Review fixes #714 2023-01-27 17:19:12 -08:00
Anmol Sethi
dce4385644
d2ir: Review fixes #714 2023-01-27 12:37:08 -08:00
Anmol Sethi
b350399d66
d2ir: Complete integration across all packages 2023-01-24 03:24:35 -08:00
Anmol Sethi
7d011bab47
d2compiler: Integrate d2ir (wip) 2023-01-24 03:24:33 -08:00
Anmol Sethi
5af31670d1
d2compiler: Integrate d2ir (wip) 2023-01-24 03:24:32 -08:00
Anmol Sethi
566ea11db7
d2compiler: Integrate d2ir (wip) 2023-01-24 03:24:32 -08:00
Anmol Sethi
b900f63414
d2compiler: Integrate d2ir (wip) 2023-01-24 03:24:31 -08:00
Anmol Sethi
154c7e8947
d2compiler: Integrate d2ir (wip) 2023-01-24 03:24:30 -08:00
Anmol Sethi
3e7bdc5468
d2compiler: Integrate d2ir (wip) 2023-01-24 03:24:29 -08:00
Anmol Sethi
bd7b5c3fc0
d2ir: Add Map.CopyBase for better performance 2023-01-24 03:24:28 -08:00
Anmol Sethi
ece34aaf01
d2ir: Add recursive scenario/step test 2023-01-24 03:24:27 -08:00
Anmol Sethi
26a72e3e0c
d2ir: Add recursive scenario/step test 2023-01-24 03:24:27 -08:00
Anmol Sethi
4424a0f10e
d2ir: Fully implement scenarios/steps 2023-01-24 03:24:26 -08:00
Anmol Sethi
d239b8dad1
d2ir: Fully implement scenarios/steps 2023-01-24 03:24:26 -08:00
Anmol Sethi
7d89174a1b
d2ir: IR Root wip 2023-01-24 03:24:25 -08:00
Anmol Sethi
748557d8f2
d2ir: IR Root wip 2023-01-24 03:24:24 -08:00
Anmol Sethi
180334a8e1
d2ir: IR Root wip 2023-01-24 03:24:23 -08:00
Anmol Sethi
6e04ebb304
d2ir: IR Root wip 2023-01-24 03:24:22 -08:00
Anmol Sethi
29b936252b
d2ir: IR Root wip 2023-01-24 03:24:17 -08:00
Anmol Sethi
98ede1f586
d2ir: IR Root wip 2023-01-24 03:24:16 -08:00
Anmol Sethi
473d5ba582
d2ir: IR Root wip 2023-01-24 03:24:15 -08:00
Anmol Sethi
33ae53dc75
d2ir: IR Root wip 2023-01-24 03:24:14 -08:00
Anmol Sethi
5741e0a4f9
d2ir: IR Root wip 2023-01-24 03:24:13 -08:00
Anmol Sethi
25ea89fea3
d2ir: IR Root wip 2023-01-24 03:24:12 -08:00
Anmol Sethi
f7394133b9
d2ir: IR Root wip 2023-01-24 03:24:11 -08:00