Merge pull request #1509 from nhooyr/filters

d2ir: Single Level Ampersand Filters
This commit is contained in:
Anmol Sethi 2023-07-30 13:50:56 -07:00 committed by GitHub
commit a1a224532b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 8537 additions and 341 deletions

View file

@ -10,6 +10,7 @@ Layout capability also takes a subtle but important step forward: you can now cu
- `null` keyword can be used to un-declare. See [docs](https://d2lang.com/tour/overrides#null) [#1446](https://github.com/terrastruct/d2/pull/1446)
- Develop multi-board diagrams in watch mode (links to layers/scenarios/steps work in `--watch`) [#1503](https://github.com/terrastruct/d2/pull/1503)
- Glob patterns have been implemented. See [docs](https://d2lang.com/tour/globs). [#1479](https://github.com/terrastruct/d2/pull/1479)
- Ampersand filters have been implemented. See [docs](https://d2lang.com/tour/filters). [#1509](https://github.com/terrastruct/d2/pull/1509)
#### Improvements 🧹

View file

@ -610,7 +610,7 @@ func (m *Map) IsFileMap() bool {
type Key struct {
Range Range `json:"range"`
// Indicates this MapKey is an override selector.
// Indicates this MapKey is a filter selector.
Ampersand bool `json:"ampersand,omitempty"`
// At least one of Key and Edges will be set but all four can also be set.
@ -720,6 +720,19 @@ func (mk *Key) SetScalar(scalar ScalarBox) {
}
}
func (mk *Key) HasQueryGlob() bool {
if mk.Key.HasGlob() && len(mk.Edges) == 0 {
return true
}
if mk.EdgeIndex != nil && mk.EdgeIndex.Glob && mk.EdgeKey == nil {
return true
}
if mk.EdgeKey.HasGlob() {
return true
}
return false
}
type KeyPath struct {
Range Range `json:"range"`
Path []*StringBox `json:"path"`
@ -748,6 +761,9 @@ func (kp *KeyPath) Copy() *KeyPath {
}
func (kp *KeyPath) HasDoubleGlob() bool {
if kp == nil {
return false
}
for _, el := range kp.Path {
if el.UnquotedString != nil && el.ScalarString() == "**" {
return true
@ -757,6 +773,9 @@ func (kp *KeyPath) HasDoubleGlob() bool {
}
func (kp *KeyPath) HasGlob() bool {
if kp == nil {
return false
}
for _, el := range kp.Path {
if el.UnquotedString != nil && len(el.UnquotedString.Pattern) > 0 {
return true
@ -1099,12 +1118,11 @@ type InterpolationBox struct {
// & is only special if it begins a key.
// - is only special if followed by another - in a key.
// ' " and | are only special if they begin an unquoted key or value.
var UnquotedKeySpecials = string([]rune{'#', ';', '\n', '\\', '{', '}', '[', ']', '\'', '"', '|', ':', '.', '-', '<', '>', '*', '&', '(', ')', '@'})
var UnquotedKeySpecials = string([]rune{'#', ';', '\n', '\\', '{', '}', '[', ']', '\'', '"', '|', ':', '.', '-', '<', '>', '*', '&', '(', ')', '@', '&'})
var UnquotedValueSpecials = string([]rune{'#', ';', '\n', '\\', '{', '}', '[', ']', '\'', '"', '|', '$', '@'})
// RawString returns s in a AST String node that can format s in the most aesthetically
// pleasing way.
// TODO: Return StringBox
func RawString(s string, inKey bool) String {
if s == "" {
return FlatDoubleQuotedString(s)
@ -1117,10 +1135,6 @@ func RawString(s string, inKey bool) String {
if i+1 < len(s) && s[i+1] != '-' {
continue
}
case '&':
if i > 0 {
continue
}
}
if strings.ContainsRune(UnquotedKeySpecials, r) {
if !strings.ContainsRune(s, '"') {

View file

@ -22,6 +22,8 @@ type compiler struct {
// importCache enables reuse of files imported multiple times.
importCache map[string]*Map
utf16 bool
globStack []bool
}
type CompileOptions struct {
@ -344,6 +346,20 @@ func (c *compiler) overlay(base *Map, f *Field) {
}
func (c *compiler) compileMap(dst *Map, ast, scopeAST *d2ast.Map) {
for _, n := range ast.Nodes {
switch {
case n.MapKey != nil:
ok := c.ampersandFilter(&RefContext{
Key: n.MapKey,
Scope: ast,
ScopeMap: dst,
ScopeAST: scopeAST,
})
if !ok {
return
}
}
}
for _, n := range ast.Nodes {
switch {
case n.MapKey != nil:
@ -396,6 +412,10 @@ func (c *compiler) compileKey(refctx *RefContext) {
}
func (c *compiler) compileField(dst *Map, kp *d2ast.KeyPath, refctx *RefContext) {
if refctx.Key.Ampersand {
return
}
fa, err := dst.EnsureField(kp, refctx, true)
if err != nil {
c.err.Errors = append(c.err.Errors, err.(d2ast.Error))
@ -407,6 +427,62 @@ func (c *compiler) compileField(dst *Map, kp *d2ast.KeyPath, refctx *RefContext)
}
}
func (c *compiler) ampersandFilter(refctx *RefContext) bool {
if !refctx.Key.Ampersand {
return true
}
if len(c.globStack) == 0 || !c.globStack[len(c.globStack)-1] {
c.errorf(refctx.Key, "glob filters cannot be used outside globs")
return false
}
if len(refctx.Key.Edges) > 0 {
return true
}
fa, err := refctx.ScopeMap.EnsureField(refctx.Key.Key, refctx, false)
if err != nil {
c.err.Errors = append(c.err.Errors, err.(d2ast.Error))
return false
}
if len(fa) == 0 {
return false
}
for _, f := range fa {
ok := c._ampersandFilter(f, refctx)
if !ok {
return false
}
}
return true
}
func (c *compiler) _ampersandFilter(f *Field, refctx *RefContext) bool {
if refctx.Key.Value.ScalarBox().Unbox() == nil {
c.errorf(refctx.Key, "glob filters cannot be composites")
return false
}
if a, ok := f.Composite.(*Array); ok {
for _, v := range a.Values {
if s, ok := v.(*Scalar); ok {
if refctx.Key.Value.ScalarBox().Unbox().ScalarString() == s.Value.ScalarString() {
return true
}
}
}
}
if f.Primary_ == nil {
return false
}
if refctx.Key.Value.ScalarBox().Unbox().ScalarString() != f.Primary_.Value.ScalarString() {
return false
}
return true
}
func (c *compiler) _compileField(f *Field, refctx *RefContext) {
if len(refctx.Key.Edges) == 0 && refctx.Key.Value.Null != nil {
// For vars, if we delete the field, it may just resolve to an outer scope var of the same name
@ -456,7 +532,9 @@ func (c *compiler) _compileField(f *Field, refctx *RefContext) {
// If new board type, use that as the new scope AST, otherwise, carry on
scopeAST = refctx.ScopeAST
}
c.globStack = append(c.globStack, refctx.Key.HasQueryGlob())
c.compileMap(f.Map(), refctx.Key.Value.Map, scopeAST)
c.globStack = c.globStack[:len(c.globStack)-1]
switch NodeBoardKind(f) {
case BoardScenario, BoardStep:
c.overlayClasses(f.Map())
@ -693,7 +771,9 @@ func (c *compiler) _compileEdges(refctx *RefContext) {
parent: e,
}
}
c.globStack = append(c.globStack, refctx.Key.HasQueryGlob())
c.compileMap(e.Map_, refctx.Key.Value.Map, refctx.ScopeAST)
c.globStack = c.globStack[:len(c.globStack)-1]
} else if refctx.Key.Value.ScalarBox().Unbox() != nil {
e.Primary_ = &Scalar{
parent: e,

View file

@ -27,6 +27,7 @@ func TestCompile(t *testing.T) {
t.Run("steps", testCompileSteps)
t.Run("imports", testCompileImports)
t.Run("patterns", testCompilePatterns)
t.Run("filters", testCompileFilters)
}
type testCase struct {

158
d2ir/filter_test.go Normal file
View file

@ -0,0 +1,158 @@
package d2ir_test
import (
"testing"
"oss.terrastruct.com/util-go/assert"
)
func testCompileFilters(t *testing.T) {
t.Parallel()
tca := []testCase{
{
name: "base",
run: func(t testing.TB) {
m, err := compile(t, `jacob: {
shape: circle
}
jeremy: {
shape: rectangle
}
*: {
&shape: rectangle
label: I'm a rectangle
}`)
assert.Success(t, err)
assertQuery(t, m, 1, 0, nil, "jacob")
assertQuery(t, m, 2, 0, nil, "jeremy")
assertQuery(t, m, 0, 0, "I'm a rectangle", "jeremy.label")
},
},
{
name: "order",
run: func(t testing.TB) {
m, err := compile(t, `jacob: {
shape: circle
}
jeremy: {
shape: rectangle
}
*: {
label: I'm a rectangle
&shape: rectangle
}`)
assert.Success(t, err)
assertQuery(t, m, 5, 0, nil, "")
assertQuery(t, m, 1, 0, nil, "jacob")
assertQuery(t, m, 2, 0, nil, "jeremy")
assertQuery(t, m, 0, 0, "I'm a rectangle", "jeremy.label")
},
},
{
name: "array",
run: func(t testing.TB) {
m, err := compile(t, `the-little-cannon: {
class: [server; deployed]
}
dino: {
class: [internal; deployed]
}
catapult: {
class: [jacob; server]
}
*: {
&class: server
style.multiple: true
}
`)
assert.Success(t, err)
assertQuery(t, m, 10, 0, nil, "")
assertQuery(t, m, 3, 0, nil, "the-little-cannon")
assertQuery(t, m, 1, 0, nil, "dino")
assertQuery(t, m, 3, 0, nil, "catapult")
},
},
{
name: "edge",
run: func(t testing.TB) {
m, err := compile(t, `x -> y: {
source-arrowhead.shape: diamond
target-arrowhead.shape: diamond
}
x -> y
(x -> *)[*]: {
&source-arrowhead.shape: diamond
&target-arrowhead.shape: diamond
label: diamond shape arrowheads
}
`)
assert.Success(t, err)
assertQuery(t, m, 7, 2, nil, "")
assertQuery(t, m, 5, 0, nil, "(x -> y)[0]")
assertQuery(t, m, 0, 0, "diamond shape arrowheads", "(x -> y)[0].label")
assertQuery(t, m, 0, 0, nil, "(x -> y)[1]")
},
},
}
runa(t, tca)
t.Run("errors", func(t *testing.T) {
tca := []testCase{
{
name: "bad-syntax",
run: func(t testing.TB) {
_, err := compile(t, `jacob.style: {
fill: red
multiple: true
}
*.&style: {
fill: red
multiple: true
}
`)
assert.ErrorString(t, err, `TestCompile/filters/errors/bad-syntax.d2:6:3: unexpected text after map key
TestCompile/filters/errors/bad-syntax.d2:9:1: unexpected map termination character } in file map`)
},
},
{
name: "no-glob",
run: func(t testing.TB) {
_, err := compile(t, `jacob.style: {
fill: red
multiple: true
}
jasmine.style: {
&fill: red
multiple: false
}
`)
assert.ErrorString(t, err, `TestCompile/filters/errors/no-glob.d2:7:3: glob filters cannot be used outside globs`)
},
},
{
name: "composite",
run: func(t testing.TB) {
_, err := compile(t, `jacob.style: {
fill: red
multiple: true
}
*: {
&style: {
fill: red
multiple: true
}
}
`)
assert.ErrorString(t, err, `TestCompile/filters/errors/composite.d2:6:2: glob filters cannot be composites`)
},
},
}
runa(t, tca)
})
}

View file

@ -323,10 +323,9 @@ task.** -> fast
{
name: "glob-edge-glob-index",
run: func(t testing.TB) {
m, err := compile(t, `(* -> b)[*].style.fill: red
_, err := compile(t, `(* -> b)[*].style.fill: red
`)
assert.ErrorString(t, err, `TestCompile/patterns/errors/glob-edge-glob-index.d2:1:2: indexed edge does not exist`)
assertQuery(t, m, 0, 0, nil, "")
},
},
}

View file

@ -1098,7 +1098,7 @@ func (p *parser) parseUnquotedString(inKey bool) (s *d2ast.UnquotedString) {
}
if inKey {
switch r {
case ':', '.', '<', '>':
case ':', '.', '<', '>', '&':
p.rewind()
return s
case '-':

View file

@ -648,11 +648,9 @@ group: {
},
{
name: "ampersand-escape",
script: `h&y: & {
script: `hy: & {
tooltip: beans & rice
}
&foo
&&bar
`,
},
{

View file

@ -4,7 +4,7 @@
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "h&y",
"id": "hy",
"type": "rectangle",
"pos": {
"x": 0,
@ -43,88 +43,6 @@
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "foo",
"type": "rectangle",
"pos": {
"x": 158,
"y": 0
},
"width": 69,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "foo",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "\"&bar\"",
"type": "rectangle",
"pos": {
"x": 287,
"y": 0
},
"width": 81,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "&bar",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 36,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [],

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 370 85"><svg id="d2-svg" class="d2-4185264130" width="370" height="85" viewBox="-1 -18 370 85"><rect x="-1.000000" y="-18.000000" width="370.000000" height="85.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 117 85"><svg id="d2-svg" class="d2-1658760307" width="117" height="85" viewBox="-1 -18 117 85"><rect x="-1.000000" y="-18.000000" width="117.000000" height="85.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.appendix-icon {
filter: drop-shadow(0px 0px 32px rgba(31, 36, 58, 0.1));
}
.d2-4185264130 .text-bold {
font-family: "d2-4185264130-font-bold";
.d2-1658760307 .text-bold {
font-family: "d2-1658760307-font-bold";
}
@font-face {
font-family: d2-4185264130-font-bold;
src: url("data:application/font-woff;base64,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");
font-family: d2-1658760307-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
@ -21,78 +21,78 @@
opacity: 0.5;
}
.d2-4185264130 .fill-N1{fill:#0A0F25;}
.d2-4185264130 .fill-N2{fill:#676C7E;}
.d2-4185264130 .fill-N3{fill:#9499AB;}
.d2-4185264130 .fill-N4{fill:#CFD2DD;}
.d2-4185264130 .fill-N5{fill:#DEE1EB;}
.d2-4185264130 .fill-N6{fill:#EEF1F8;}
.d2-4185264130 .fill-N7{fill:#FFFFFF;}
.d2-4185264130 .fill-B1{fill:#0D32B2;}
.d2-4185264130 .fill-B2{fill:#0D32B2;}
.d2-4185264130 .fill-B3{fill:#E3E9FD;}
.d2-4185264130 .fill-B4{fill:#E3E9FD;}
.d2-4185264130 .fill-B5{fill:#EDF0FD;}
.d2-4185264130 .fill-B6{fill:#F7F8FE;}
.d2-4185264130 .fill-AA2{fill:#4A6FF3;}
.d2-4185264130 .fill-AA4{fill:#EDF0FD;}
.d2-4185264130 .fill-AA5{fill:#F7F8FE;}
.d2-4185264130 .fill-AB4{fill:#EDF0FD;}
.d2-4185264130 .fill-AB5{fill:#F7F8FE;}
.d2-4185264130 .stroke-N1{stroke:#0A0F25;}
.d2-4185264130 .stroke-N2{stroke:#676C7E;}
.d2-4185264130 .stroke-N3{stroke:#9499AB;}
.d2-4185264130 .stroke-N4{stroke:#CFD2DD;}
.d2-4185264130 .stroke-N5{stroke:#DEE1EB;}
.d2-4185264130 .stroke-N6{stroke:#EEF1F8;}
.d2-4185264130 .stroke-N7{stroke:#FFFFFF;}
.d2-4185264130 .stroke-B1{stroke:#0D32B2;}
.d2-4185264130 .stroke-B2{stroke:#0D32B2;}
.d2-4185264130 .stroke-B3{stroke:#E3E9FD;}
.d2-4185264130 .stroke-B4{stroke:#E3E9FD;}
.d2-4185264130 .stroke-B5{stroke:#EDF0FD;}
.d2-4185264130 .stroke-B6{stroke:#F7F8FE;}
.d2-4185264130 .stroke-AA2{stroke:#4A6FF3;}
.d2-4185264130 .stroke-AA4{stroke:#EDF0FD;}
.d2-4185264130 .stroke-AA5{stroke:#F7F8FE;}
.d2-4185264130 .stroke-AB4{stroke:#EDF0FD;}
.d2-4185264130 .stroke-AB5{stroke:#F7F8FE;}
.d2-4185264130 .background-color-N1{background-color:#0A0F25;}
.d2-4185264130 .background-color-N2{background-color:#676C7E;}
.d2-4185264130 .background-color-N3{background-color:#9499AB;}
.d2-4185264130 .background-color-N4{background-color:#CFD2DD;}
.d2-4185264130 .background-color-N5{background-color:#DEE1EB;}
.d2-4185264130 .background-color-N6{background-color:#EEF1F8;}
.d2-4185264130 .background-color-N7{background-color:#FFFFFF;}
.d2-4185264130 .background-color-B1{background-color:#0D32B2;}
.d2-4185264130 .background-color-B2{background-color:#0D32B2;}
.d2-4185264130 .background-color-B3{background-color:#E3E9FD;}
.d2-4185264130 .background-color-B4{background-color:#E3E9FD;}
.d2-4185264130 .background-color-B5{background-color:#EDF0FD;}
.d2-4185264130 .background-color-B6{background-color:#F7F8FE;}
.d2-4185264130 .background-color-AA2{background-color:#4A6FF3;}
.d2-4185264130 .background-color-AA4{background-color:#EDF0FD;}
.d2-4185264130 .background-color-AA5{background-color:#F7F8FE;}
.d2-4185264130 .background-color-AB4{background-color:#EDF0FD;}
.d2-4185264130 .background-color-AB5{background-color:#F7F8FE;}
.d2-4185264130 .color-N1{color:#0A0F25;}
.d2-4185264130 .color-N2{color:#676C7E;}
.d2-4185264130 .color-N3{color:#9499AB;}
.d2-4185264130 .color-N4{color:#CFD2DD;}
.d2-4185264130 .color-N5{color:#DEE1EB;}
.d2-4185264130 .color-N6{color:#EEF1F8;}
.d2-4185264130 .color-N7{color:#FFFFFF;}
.d2-4185264130 .color-B1{color:#0D32B2;}
.d2-4185264130 .color-B2{color:#0D32B2;}
.d2-4185264130 .color-B3{color:#E3E9FD;}
.d2-4185264130 .color-B4{color:#E3E9FD;}
.d2-4185264130 .color-B5{color:#EDF0FD;}
.d2-4185264130 .color-B6{color:#F7F8FE;}
.d2-4185264130 .color-AA2{color:#4A6FF3;}
.d2-4185264130 .color-AA4{color:#EDF0FD;}
.d2-4185264130 .color-AA5{color:#F7F8FE;}
.d2-4185264130 .color-AB4{color:#EDF0FD;}
.d2-4185264130 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="h&amp;y"><g class="shape" ><rect x="0.000000" y="0.000000" width="98.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="49.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&amp;</text><title>beans &amp; rice</title></g><g id="foo"><g class="shape" ><rect x="158.000000" y="0.000000" width="69.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="192.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">foo</text></g><g id="&#34;&amp;bar&#34;"><g class="shape" ><rect x="287.000000" y="0.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="327.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&amp;bar</text></g><g transform="translate(82 -16)" class="appendix-icon"><title>beans &amp; rice</title><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
.d2-1658760307 .fill-N1{fill:#0A0F25;}
.d2-1658760307 .fill-N2{fill:#676C7E;}
.d2-1658760307 .fill-N3{fill:#9499AB;}
.d2-1658760307 .fill-N4{fill:#CFD2DD;}
.d2-1658760307 .fill-N5{fill:#DEE1EB;}
.d2-1658760307 .fill-N6{fill:#EEF1F8;}
.d2-1658760307 .fill-N7{fill:#FFFFFF;}
.d2-1658760307 .fill-B1{fill:#0D32B2;}
.d2-1658760307 .fill-B2{fill:#0D32B2;}
.d2-1658760307 .fill-B3{fill:#E3E9FD;}
.d2-1658760307 .fill-B4{fill:#E3E9FD;}
.d2-1658760307 .fill-B5{fill:#EDF0FD;}
.d2-1658760307 .fill-B6{fill:#F7F8FE;}
.d2-1658760307 .fill-AA2{fill:#4A6FF3;}
.d2-1658760307 .fill-AA4{fill:#EDF0FD;}
.d2-1658760307 .fill-AA5{fill:#F7F8FE;}
.d2-1658760307 .fill-AB4{fill:#EDF0FD;}
.d2-1658760307 .fill-AB5{fill:#F7F8FE;}
.d2-1658760307 .stroke-N1{stroke:#0A0F25;}
.d2-1658760307 .stroke-N2{stroke:#676C7E;}
.d2-1658760307 .stroke-N3{stroke:#9499AB;}
.d2-1658760307 .stroke-N4{stroke:#CFD2DD;}
.d2-1658760307 .stroke-N5{stroke:#DEE1EB;}
.d2-1658760307 .stroke-N6{stroke:#EEF1F8;}
.d2-1658760307 .stroke-N7{stroke:#FFFFFF;}
.d2-1658760307 .stroke-B1{stroke:#0D32B2;}
.d2-1658760307 .stroke-B2{stroke:#0D32B2;}
.d2-1658760307 .stroke-B3{stroke:#E3E9FD;}
.d2-1658760307 .stroke-B4{stroke:#E3E9FD;}
.d2-1658760307 .stroke-B5{stroke:#EDF0FD;}
.d2-1658760307 .stroke-B6{stroke:#F7F8FE;}
.d2-1658760307 .stroke-AA2{stroke:#4A6FF3;}
.d2-1658760307 .stroke-AA4{stroke:#EDF0FD;}
.d2-1658760307 .stroke-AA5{stroke:#F7F8FE;}
.d2-1658760307 .stroke-AB4{stroke:#EDF0FD;}
.d2-1658760307 .stroke-AB5{stroke:#F7F8FE;}
.d2-1658760307 .background-color-N1{background-color:#0A0F25;}
.d2-1658760307 .background-color-N2{background-color:#676C7E;}
.d2-1658760307 .background-color-N3{background-color:#9499AB;}
.d2-1658760307 .background-color-N4{background-color:#CFD2DD;}
.d2-1658760307 .background-color-N5{background-color:#DEE1EB;}
.d2-1658760307 .background-color-N6{background-color:#EEF1F8;}
.d2-1658760307 .background-color-N7{background-color:#FFFFFF;}
.d2-1658760307 .background-color-B1{background-color:#0D32B2;}
.d2-1658760307 .background-color-B2{background-color:#0D32B2;}
.d2-1658760307 .background-color-B3{background-color:#E3E9FD;}
.d2-1658760307 .background-color-B4{background-color:#E3E9FD;}
.d2-1658760307 .background-color-B5{background-color:#EDF0FD;}
.d2-1658760307 .background-color-B6{background-color:#F7F8FE;}
.d2-1658760307 .background-color-AA2{background-color:#4A6FF3;}
.d2-1658760307 .background-color-AA4{background-color:#EDF0FD;}
.d2-1658760307 .background-color-AA5{background-color:#F7F8FE;}
.d2-1658760307 .background-color-AB4{background-color:#EDF0FD;}
.d2-1658760307 .background-color-AB5{background-color:#F7F8FE;}
.d2-1658760307 .color-N1{color:#0A0F25;}
.d2-1658760307 .color-N2{color:#676C7E;}
.d2-1658760307 .color-N3{color:#9499AB;}
.d2-1658760307 .color-N4{color:#CFD2DD;}
.d2-1658760307 .color-N5{color:#DEE1EB;}
.d2-1658760307 .color-N6{color:#EEF1F8;}
.d2-1658760307 .color-N7{color:#FFFFFF;}
.d2-1658760307 .color-B1{color:#0D32B2;}
.d2-1658760307 .color-B2{color:#0D32B2;}
.d2-1658760307 .color-B3{color:#E3E9FD;}
.d2-1658760307 .color-B4{color:#E3E9FD;}
.d2-1658760307 .color-B5{color:#EDF0FD;}
.d2-1658760307 .color-B6{color:#F7F8FE;}
.d2-1658760307 .color-AA2{color:#4A6FF3;}
.d2-1658760307 .color-AA4{color:#EDF0FD;}
.d2-1658760307 .color-AA5{color:#F7F8FE;}
.d2-1658760307 .color-AB4{color:#EDF0FD;}
.d2-1658760307 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="hy"><g class="shape" ><rect x="0.000000" y="0.000000" width="98.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="49.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&amp;</text><title>beans &amp; rice</title></g><g transform="translate(82 -16)" class="appendix-icon"><title>beans &amp; rice</title><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3427_35082111)">
<path d="M16 31.1109C24.3456 31.1109 31.1111 24.3454 31.1111 15.9998C31.1111 7.65415 24.3456 0.888672 16 0.888672C7.65436 0.888672 0.888885 7.65415 0.888885 15.9998C0.888885 24.3454 7.65436 31.1109 16 31.1109Z" fill="white" stroke="#DEE1EB"/>
<path d="M16 26C21.5228 26 26 21.5228 26 16C26 10.4772 21.5228 6 16 6C10.4772 6 6 10.4772 6 16C6 21.5228 10.4772 26 16 26Z" stroke="#2E3346" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
@ -105,9 +105,7 @@
</clipPath>
</defs>
</svg>
</g><mask id="d2-4185264130" maskUnits="userSpaceOnUse" x="-1" y="-18" width="370" height="85">
<rect x="-1" y="-18" width="370" height="85" fill="white"></rect>
</g><mask id="d2-1658760307" maskUnits="userSpaceOnUse" x="-1" y="-18" width="117" height="85">
<rect x="-1" y="-18" width="117" height="85" fill="white"></rect>
<rect x="38.500000" y="22.500000" width="21" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="180.500000" y="22.500000" width="24" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="309.500000" y="22.500000" width="36" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -4,7 +4,7 @@
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "h&y",
"id": "hy",
"type": "rectangle",
"pos": {
"x": 12,
@ -43,88 +43,6 @@
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "foo",
"type": "rectangle",
"pos": {
"x": 130,
"y": 12
},
"width": 69,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "foo",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "\"&bar\"",
"type": "rectangle",
"pos": {
"x": 219,
"y": 12
},
"width": 81,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "&bar",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 36,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [],

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 290 85"><svg id="d2-svg" class="d2-185267393" width="290" height="85" viewBox="11 -6 290 85"><rect x="11.000000" y="-6.000000" width="290.000000" height="85.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 117 85"><svg id="d2-svg" class="d2-616571211" width="117" height="85" viewBox="11 -6 117 85"><rect x="11.000000" y="-6.000000" width="117.000000" height="85.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.appendix-icon {
filter: drop-shadow(0px 0px 32px rgba(31, 36, 58, 0.1));
}
.d2-185267393 .text-bold {
font-family: "d2-185267393-font-bold";
.d2-616571211 .text-bold {
font-family: "d2-616571211-font-bold";
}
@font-face {
font-family: d2-185267393-font-bold;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAngAAoAAAAAD5QAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXxHXrmNtYXAAAAFUAAAAagAAAIACDwHGZ2x5ZgAAAcAAAAP4AAAE3PK9TiZoZWFkAAAFuAAAADYAAAA2G38e1GhoZWEAAAXwAAAAJAAAACQKfwXPaG10eAAABhQAAABAAAAAQBt4Alpsb2NhAAAGVAAAACIAAAAiCuIJ2m1heHAAAAZ4AAAAIAAAACAAKAD3bmFtZQAABpgAAAMoAAAIKgjwVkFwb3N0AAAJwAAAAB0AAAAg/9EAMgADAioCvAAFAAACigJYAAAASwKKAlgAAAFeADIBKQAAAgsHAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPACAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAfAClAAAACAAA3icXMw7DgFhAEbRM/OP90jEClR6SxIhmYYEixGFsC+NxjY+iajc8hYHlaJCq3HG3ExRW1ha2djpHJwSfm9tq7N3TPLKO888cs8t11y+0n+V1lStaPT0DQyNjE34AAAA//8BAAD//yrfF8YAAHicZJRPbNv0G8bfr5vYW5qtdeI/cf45iRM7ThenjWNbaZu6aZJmv5+SKmvVf4wurIcBamlF25ECQhxAk5hAHLrDxAEucIMD4sSkcuGE4NZJSEhITNoZ9VBxShP0dVOGxMHye7De53k+7yODG1oAxCbxCIbgKoyAD1gAnY7TKV1RJMrSLUvihywF0VSL8PW++lJRXarqysQei++026h5h3h0vn27ubn5V3tqqvf59096n6D9JwAEZPpn6CnqggASAJ+QjYJpybKUICnFNPU8x9KSIpGklTctgyRZhvuh2vrwiJBUcTZp5LYm2/cOPS6xfkVI+RemRe+qvbA2ElcC7N1Icmev91wPS3u8f9UzFgnwgPXK/TOCI46BARHAnZAViZJonaUcMY5lSFLJm0ZBSlAsx6FavBJxefePXJFqYnotN91ek82VGyqT9sZjBnH8dSMYmXmzsfy2fTjfeJD92XcdABAk+2foGHUh6CjgSHg5T+FYLMPpedPiSRIJtd3yzbeqWj1ck2KGbY8HNP9kasVbur+4dFCK8u1IozzbZEdeiYXA8Y73PkNdCAy8X27Gtqk4x+l5vHdIL2AhJNb35irbU/WNnIvo/eqZnzDMCfnOZ98pNxKmd+Zg8daBbW9V/amrph5fD0bRpGrkwPEfAEAHxE/4rdOSYb0I4CRgdVaiX5qbS7YqYmE0dC3oDUXX19F7b7hDxkrBS2673XE5ut/7APp9sADgd+KEkAGzoWAEHjoaZRwIdYHBGjqvXx6bdsxTdPnQ44o187f+dxSJhdMBdGpHs1sbvV9Q3EwLfO/bAQ+CQl0YgdB/eFyccUAccfZutbpr2zvV6o6d1bSsls0OOJcOlhbvlzrN2XID4x54Q5+iLvj+7W2Q/sJZqCGzYU/gmjAaLjHodDU/4Xa/73Kp+d4fgIDtn6EvUBcUp9GKhS+DzciKRhiFF8tYhuOjBMuQJxOvynMJW4xHI1owOpV+fbm4Ks4FC8FiUY6V1Ne8sviyEOL9NOf3eJNFtbaiBNYYTgkI14elolbZwHcbAqF/RnxEPIZhKIAN4Gc43hxA8F/Qsf5hhBFRHP7A0i8mSpYVklRwPy1nfDbskcY5XkjQ9bsT9XE/O9Yy/7+SnkmEK0lB9j7wGbJYFKT0cka997E5pqqpWsQvoD99aYbV4nxYOX+uL+ery6JUE3PNXKuaqRh8rBSMLWhTO/oo6+pcSQRE6ceUFhSrSVp2ejEPgH4j3gUvgG7g9mGDtM7OP+wUbia2Ox20e9sTZs67HbjsETxFpzDk3IouH6HT3iig/jdEEZaIExgGoJ2/ykXmlKalUppGFDOSlMEP/A0AAP//AQAA//+oxPNpAAEAAAACC4VTWQKbXw889QABA+gAAAAA2F2ghAAAAADdZi82/jf+xAhtA/EAAQADAAIAAAAAAAAAAQAAA9j+7wAACJj+N/43CG0AAQAAAAAAAAAAAAAAAAAAABACsgBQAMgAAAIPACoCPQBBAdMAJAIGACQBVQAYARQANwI8AEECKwAkAY4AQQG7ABUCmwAZAhAARgEUAEEAAP+tAAAALAAsAGQAlgDCAPYBHAEoAUoBdgGWAdICNAJMAlgCbgAAAAEAAAAQAJAADABjAAcAAQAAAAAAAAAAAAAAAAAEAAN4nJyUz24bVRTGf05s0wrBAkVVuonugkWR6NhUSdU2K4fUikUUB48LQkJIE8/4jzKeGXkmDuEJWPMWvEVXPATPgVij+Xzs2AXRJoqSfHfu+fOdc75zgR3+ZptK9SHwRz0xXGGvfm54iwf1E8PbtOtbhqs8qf1puEZYmxuu83mtZ/gj3lZ/M/yA/epPhh+yW20b/phn1R3Dn2w7/jL8Kfu8XeAKvOBXwxV2yQxvscOPhrd5hMWsVHlE03CNz9gzXGcP6DOhIGZCwgjHkAkjrpgRkeMTMWPCkIgQR4cWMYW+JgRCjtF/fg3wKZgRKOKYAkeMT0xAztgi/iKvlHNlHOo0s7sWBWMCLuRxSUCCI2VESkLEpeIUFGS8okGDnIH4ZhTkeORMiPFImTGiQZc2p/QZMyHH0VakkplPypCCawLld2ZRdmZAREJurK5ICMXTiV8k7w6nOLpksl2PfLoR4Usc38m75JbK9is8/bo1Zpt5l2wC5upnrK7EurnWBMe6LfO2+Fa44BXuXv3ZZPL+HoX6XyjyBVeaf6hJJWKS4NwuLXwpyHePcRzp3MFXR76nQ58Turyhr3OLHj1anNGnw2v5dunh+JouZxzLoyO8uGtLMWf8gOMbOrIpY0fWn8XEIn4mM3Xn4jhTHVMy9bxk7qnWSBXefcLlDqUb6sjlM9AelZZO80u0ZwEjU0UmhlP1cqmN3PoXmiKmqqWc7e19uQ1z273lFt+QaodLtS44lZNbMHrfVL13NHOtH4+AkJQLWQxImdKg4Ea8zwm4IsZxrO6daEsKWiufMs+NVBIxFYMOieLMyPQ3MN34xn2woXtnb0ko/5Lp5aqq+2Rx6tXtjN6oe8s737ocrU2gYVNN19Q0ENfEtB9pp9b5+/LN9bqlPOWIlJjwXy/AMzya7HPAIWNlGOhmbq9DUy9Ek5ccqvpLIlkNpefIIhzg8ZwDDnjJ83f6uGTijItbcVnP3eKYI7ocflAVC/suR7xeffv/rL+LaVO1OJ6uTi/uPcUnd1DrF9qz2/eyp4mVk5hbtNutOCNgWnJxu+s1ucd4/wAAAP//AQAA///0t09ReJxiYGYAg//nGIwYsAAAAAAA//8BAAD//y8BAgMAAAA=");
font-family: d2-616571211-font-bold;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAloAAoAAAAADuAAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXxHXrmNtYXAAAAFUAAAAZgAAAHwB/wGvZ2x5ZgAAAbwAAAOQAAAEOAzMWydoZWFkAAAFTAAAADYAAAA2G38e1GhoZWEAAAWEAAAAJAAAACQKfwXNaG10eAAABagAAAA4AAAAOBf4Ah5sb2NhAAAF4AAAAB4AAAAeCHIHgG1heHAAAAYAAAAAIAAAACAAJgD3bmFtZQAABiAAAAMoAAAIKgjwVkFwb3N0AAAJSAAAAB0AAAAg/9EAMgADAioCvAAFAAACigJYAAAASwKKAlgAAAFeADIBKQAAAgsHAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPACAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAfAClAAAACAAA3icXMw9DkFBAEbRM2+ef4VYgUpvSSIKjQh7kSgkbEsnsY9PIlO55SkuiqpgrnfC0kLVWVnb2Nk7OLokNNs2Oyd555NXnnnknluuv9N/xdRMp+oNDI2MTfgCAAD//wEAAP//x20XnwAAeJxMk09s21Qcx3/v1bW3NFvr+F+cJnHil9hxujltHNtK2zRLkzQDJVW2KW3R6MJ6GKBWm+gKKXDggiYxgTh0h4kDXOAGB8SJSeXCEW6dhISExKSdUQ8RpzRBdle2g6V3sD7f79efZxiHNgDewo9gDM7DJIRAALDYJJu2dJ0wruW6RBpzdcQybRwafvetblCGQWUTj5WPul3UuoUfnezcbG1t/dtdWBh+/fOT4Rfo/hMADNlRHz1FA5CBAEiqZhccV9OISjO641h5UWCJTmjazTuuTdMCL/5Sa396gImhXEnZue357p39AKU0zslpbnVRCa6XVzcmk3pYuB1L3d0dPreiZFfi1gMzsbAEXl5l1MciPgQeFIBxVdMJQ1hLYPwwUeBpWs87doGojCCKqJ6sxqjg/QMqVlMXN3KL3Q3NWbtk8JlgMmHjw++bkdjSe83Oh+X9leaDy7+FLgIAgtSojw7RACJ+gjfJg0uMN0vgRSvvuBJNI7l+r3L1g5rZiNZJwi6XZ8MmN59eC5bev35jrxSXurFm5UpLmHwrMQ1+d4/7DA0g/KL7GdmrzSRF0cp73DGr4AUhpbG7XN1ZaGzmKDz8I7AyZztz2q2vftIvqU5wae/6tb1yebvGpc87VvKNSBzNG3YOAEYjcAHgL3yENQgCAAMX4KG/q+KVQAPgPfeWZJ0JYv1Ahq3sB6hEK3/ttYNYIpoJo+Ny/PL25vB3lHQysjT88QUDfYkGEHqVITHaS8J0UxOigfAFeSpa4tHxen5ufPwTijLyw78BgTDqo2/QAHT/tuiut9qxC5qmm9guvIQJvCjFscDTR3Nva8tqWUnGY2YkvpB5t1NcV5YjhUixqCVKxjtBTXlTnpY4VuQCwVTRqK/p4Q1e1MPyxQlSNKub3rcfA3nUx5/hxzABBSgDcLwoOV4uUWnu1IT7vw/vFjGi94JrnZ4YTdNpWvfcu/7x2USAzIqSrLKN23ONWU6YaTuvr2WW1Gg1JWvBByFbU4oyyXSyxp3PnRnDSNdjnIz+CWV4wUxKUf3kudXJ1zoKqSu5Vq5dy1ZtKVGKJFbNhbvWlED1zqlhhfyaNiNKLcVqvr8VAPQn/tizatkWS2yvIGsJKw97havqTq+H7t0MRPmTQQ/OfMNTdAxjviu2coCOh1OARj/gItzARzABwPp/7OnmtGmm06aJi1lCst4D/wEAAP//AQAA//9cddO5AAEAAAACC4UrPvNzXw889QABA+gAAAAA2F2ghAAAAADdZi82/jf+xAhtA/EAAQADAAIAAAAAAAAAAQAAA9j+7wAACJj+N/43CG0AAQAAAAAAAAAAAAAAAAAAAA4CsgBQAMgAAAIPACoCPQBBAdMAJAIGACQBFAA3AjwAQQGOAEEBuwAVApsAGQIQAEYBFABBAAD/rQAAACwALABkAJYAwgD2AQIBJAFEAYAB4gH6AgYCHAAAAAEAAAAOAJAADABjAAcAAQAAAAAAAAAAAAAAAAAEAAN4nJyUz24bVRTGf05s0wrBAkVVuonugkWR6NhUSdU2K4fUikUUB48LQkJIE8/4jzKeGXkmDuEJWPMWvEVXPATPgVij+Xzs2AXRJoqSfHfu+fOdc75zgR3+ZptK9SHwRz0xXGGvfm54iwf1E8PbtOtbhqs8qf1puEZYmxuu83mtZ/gj3lZ/M/yA/epPhh+yW20b/phn1R3Dn2w7/jL8Kfu8XeAKvOBXwxV2yQxvscOPhrd5hMWsVHlE03CNz9gzXGcP6DOhIGZCwgjHkAkjrpgRkeMTMWPCkIgQR4cWMYW+JgRCjtF/fg3wKZgRKOKYAkeMT0xAztgi/iKvlHNlHOo0s7sWBWMCLuRxSUCCI2VESkLEpeIUFGS8okGDnIH4ZhTkeORMiPFImTGiQZc2p/QZMyHH0VakkplPypCCawLld2ZRdmZAREJurK5ICMXTiV8k7w6nOLpksl2PfLoR4Usc38m75JbK9is8/bo1Zpt5l2wC5upnrK7EurnWBMe6LfO2+Fa44BXuXv3ZZPL+HoX6XyjyBVeaf6hJJWKS4NwuLXwpyHePcRzp3MFXR76nQ58Turyhr3OLHj1anNGnw2v5dunh+JouZxzLoyO8uGtLMWf8gOMbOrIpY0fWn8XEIn4mM3Xn4jhTHVMy9bxk7qnWSBXefcLlDqUb6sjlM9AelZZO80u0ZwEjU0UmhlP1cqmN3PoXmiKmqqWc7e19uQ1z273lFt+QaodLtS44lZNbMHrfVL13NHOtH4+AkJQLWQxImdKg4Ea8zwm4IsZxrO6daEsKWiufMs+NVBIxFYMOieLMyPQ3MN34xn2woXtnb0ko/5Lp5aqq+2Rx6tXtjN6oe8s737ocrU2gYVNN19Q0ENfEtB9pp9b5+/LN9bqlPOWIlJjwXy/AMzya7HPAIWNlGOhmbq9DUy9Ek5ccqvpLIlkNpefIIhzg8ZwDDnjJ83f6uGTijItbcVnP3eKYI7ocflAVC/suR7xeffv/rL+LaVO1OJ6uTi/uPcUnd1DrF9qz2/eyp4mVk5hbtNutOCNgWnJxu+s1ucd4/wAAAP//AQAA///0t09ReJxiYGYAg//nGIwYsAAAAAAA//8BAAD//y8BAgMAAAA=");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
@ -21,78 +21,78 @@
opacity: 0.5;
}
.d2-185267393 .fill-N1{fill:#0A0F25;}
.d2-185267393 .fill-N2{fill:#676C7E;}
.d2-185267393 .fill-N3{fill:#9499AB;}
.d2-185267393 .fill-N4{fill:#CFD2DD;}
.d2-185267393 .fill-N5{fill:#DEE1EB;}
.d2-185267393 .fill-N6{fill:#EEF1F8;}
.d2-185267393 .fill-N7{fill:#FFFFFF;}
.d2-185267393 .fill-B1{fill:#0D32B2;}
.d2-185267393 .fill-B2{fill:#0D32B2;}
.d2-185267393 .fill-B3{fill:#E3E9FD;}
.d2-185267393 .fill-B4{fill:#E3E9FD;}
.d2-185267393 .fill-B5{fill:#EDF0FD;}
.d2-185267393 .fill-B6{fill:#F7F8FE;}
.d2-185267393 .fill-AA2{fill:#4A6FF3;}
.d2-185267393 .fill-AA4{fill:#EDF0FD;}
.d2-185267393 .fill-AA5{fill:#F7F8FE;}
.d2-185267393 .fill-AB4{fill:#EDF0FD;}
.d2-185267393 .fill-AB5{fill:#F7F8FE;}
.d2-185267393 .stroke-N1{stroke:#0A0F25;}
.d2-185267393 .stroke-N2{stroke:#676C7E;}
.d2-185267393 .stroke-N3{stroke:#9499AB;}
.d2-185267393 .stroke-N4{stroke:#CFD2DD;}
.d2-185267393 .stroke-N5{stroke:#DEE1EB;}
.d2-185267393 .stroke-N6{stroke:#EEF1F8;}
.d2-185267393 .stroke-N7{stroke:#FFFFFF;}
.d2-185267393 .stroke-B1{stroke:#0D32B2;}
.d2-185267393 .stroke-B2{stroke:#0D32B2;}
.d2-185267393 .stroke-B3{stroke:#E3E9FD;}
.d2-185267393 .stroke-B4{stroke:#E3E9FD;}
.d2-185267393 .stroke-B5{stroke:#EDF0FD;}
.d2-185267393 .stroke-B6{stroke:#F7F8FE;}
.d2-185267393 .stroke-AA2{stroke:#4A6FF3;}
.d2-185267393 .stroke-AA4{stroke:#EDF0FD;}
.d2-185267393 .stroke-AA5{stroke:#F7F8FE;}
.d2-185267393 .stroke-AB4{stroke:#EDF0FD;}
.d2-185267393 .stroke-AB5{stroke:#F7F8FE;}
.d2-185267393 .background-color-N1{background-color:#0A0F25;}
.d2-185267393 .background-color-N2{background-color:#676C7E;}
.d2-185267393 .background-color-N3{background-color:#9499AB;}
.d2-185267393 .background-color-N4{background-color:#CFD2DD;}
.d2-185267393 .background-color-N5{background-color:#DEE1EB;}
.d2-185267393 .background-color-N6{background-color:#EEF1F8;}
.d2-185267393 .background-color-N7{background-color:#FFFFFF;}
.d2-185267393 .background-color-B1{background-color:#0D32B2;}
.d2-185267393 .background-color-B2{background-color:#0D32B2;}
.d2-185267393 .background-color-B3{background-color:#E3E9FD;}
.d2-185267393 .background-color-B4{background-color:#E3E9FD;}
.d2-185267393 .background-color-B5{background-color:#EDF0FD;}
.d2-185267393 .background-color-B6{background-color:#F7F8FE;}
.d2-185267393 .background-color-AA2{background-color:#4A6FF3;}
.d2-185267393 .background-color-AA4{background-color:#EDF0FD;}
.d2-185267393 .background-color-AA5{background-color:#F7F8FE;}
.d2-185267393 .background-color-AB4{background-color:#EDF0FD;}
.d2-185267393 .background-color-AB5{background-color:#F7F8FE;}
.d2-185267393 .color-N1{color:#0A0F25;}
.d2-185267393 .color-N2{color:#676C7E;}
.d2-185267393 .color-N3{color:#9499AB;}
.d2-185267393 .color-N4{color:#CFD2DD;}
.d2-185267393 .color-N5{color:#DEE1EB;}
.d2-185267393 .color-N6{color:#EEF1F8;}
.d2-185267393 .color-N7{color:#FFFFFF;}
.d2-185267393 .color-B1{color:#0D32B2;}
.d2-185267393 .color-B2{color:#0D32B2;}
.d2-185267393 .color-B3{color:#E3E9FD;}
.d2-185267393 .color-B4{color:#E3E9FD;}
.d2-185267393 .color-B5{color:#EDF0FD;}
.d2-185267393 .color-B6{color:#F7F8FE;}
.d2-185267393 .color-AA2{color:#4A6FF3;}
.d2-185267393 .color-AA4{color:#EDF0FD;}
.d2-185267393 .color-AA5{color:#F7F8FE;}
.d2-185267393 .color-AB4{color:#EDF0FD;}
.d2-185267393 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="h&amp;y"><g class="shape" ><rect x="12.000000" y="12.000000" width="98.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="61.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&amp;</text><title>beans &amp; rice</title></g><g id="foo"><g class="shape" ><rect x="130.000000" y="12.000000" width="69.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="164.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">foo</text></g><g id="&#34;&amp;bar&#34;"><g class="shape" ><rect x="219.000000" y="12.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="259.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&amp;bar</text></g><g transform="translate(94 -4)" class="appendix-icon"><title>beans &amp; rice</title><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
.d2-616571211 .fill-N1{fill:#0A0F25;}
.d2-616571211 .fill-N2{fill:#676C7E;}
.d2-616571211 .fill-N3{fill:#9499AB;}
.d2-616571211 .fill-N4{fill:#CFD2DD;}
.d2-616571211 .fill-N5{fill:#DEE1EB;}
.d2-616571211 .fill-N6{fill:#EEF1F8;}
.d2-616571211 .fill-N7{fill:#FFFFFF;}
.d2-616571211 .fill-B1{fill:#0D32B2;}
.d2-616571211 .fill-B2{fill:#0D32B2;}
.d2-616571211 .fill-B3{fill:#E3E9FD;}
.d2-616571211 .fill-B4{fill:#E3E9FD;}
.d2-616571211 .fill-B5{fill:#EDF0FD;}
.d2-616571211 .fill-B6{fill:#F7F8FE;}
.d2-616571211 .fill-AA2{fill:#4A6FF3;}
.d2-616571211 .fill-AA4{fill:#EDF0FD;}
.d2-616571211 .fill-AA5{fill:#F7F8FE;}
.d2-616571211 .fill-AB4{fill:#EDF0FD;}
.d2-616571211 .fill-AB5{fill:#F7F8FE;}
.d2-616571211 .stroke-N1{stroke:#0A0F25;}
.d2-616571211 .stroke-N2{stroke:#676C7E;}
.d2-616571211 .stroke-N3{stroke:#9499AB;}
.d2-616571211 .stroke-N4{stroke:#CFD2DD;}
.d2-616571211 .stroke-N5{stroke:#DEE1EB;}
.d2-616571211 .stroke-N6{stroke:#EEF1F8;}
.d2-616571211 .stroke-N7{stroke:#FFFFFF;}
.d2-616571211 .stroke-B1{stroke:#0D32B2;}
.d2-616571211 .stroke-B2{stroke:#0D32B2;}
.d2-616571211 .stroke-B3{stroke:#E3E9FD;}
.d2-616571211 .stroke-B4{stroke:#E3E9FD;}
.d2-616571211 .stroke-B5{stroke:#EDF0FD;}
.d2-616571211 .stroke-B6{stroke:#F7F8FE;}
.d2-616571211 .stroke-AA2{stroke:#4A6FF3;}
.d2-616571211 .stroke-AA4{stroke:#EDF0FD;}
.d2-616571211 .stroke-AA5{stroke:#F7F8FE;}
.d2-616571211 .stroke-AB4{stroke:#EDF0FD;}
.d2-616571211 .stroke-AB5{stroke:#F7F8FE;}
.d2-616571211 .background-color-N1{background-color:#0A0F25;}
.d2-616571211 .background-color-N2{background-color:#676C7E;}
.d2-616571211 .background-color-N3{background-color:#9499AB;}
.d2-616571211 .background-color-N4{background-color:#CFD2DD;}
.d2-616571211 .background-color-N5{background-color:#DEE1EB;}
.d2-616571211 .background-color-N6{background-color:#EEF1F8;}
.d2-616571211 .background-color-N7{background-color:#FFFFFF;}
.d2-616571211 .background-color-B1{background-color:#0D32B2;}
.d2-616571211 .background-color-B2{background-color:#0D32B2;}
.d2-616571211 .background-color-B3{background-color:#E3E9FD;}
.d2-616571211 .background-color-B4{background-color:#E3E9FD;}
.d2-616571211 .background-color-B5{background-color:#EDF0FD;}
.d2-616571211 .background-color-B6{background-color:#F7F8FE;}
.d2-616571211 .background-color-AA2{background-color:#4A6FF3;}
.d2-616571211 .background-color-AA4{background-color:#EDF0FD;}
.d2-616571211 .background-color-AA5{background-color:#F7F8FE;}
.d2-616571211 .background-color-AB4{background-color:#EDF0FD;}
.d2-616571211 .background-color-AB5{background-color:#F7F8FE;}
.d2-616571211 .color-N1{color:#0A0F25;}
.d2-616571211 .color-N2{color:#676C7E;}
.d2-616571211 .color-N3{color:#9499AB;}
.d2-616571211 .color-N4{color:#CFD2DD;}
.d2-616571211 .color-N5{color:#DEE1EB;}
.d2-616571211 .color-N6{color:#EEF1F8;}
.d2-616571211 .color-N7{color:#FFFFFF;}
.d2-616571211 .color-B1{color:#0D32B2;}
.d2-616571211 .color-B2{color:#0D32B2;}
.d2-616571211 .color-B3{color:#E3E9FD;}
.d2-616571211 .color-B4{color:#E3E9FD;}
.d2-616571211 .color-B5{color:#EDF0FD;}
.d2-616571211 .color-B6{color:#F7F8FE;}
.d2-616571211 .color-AA2{color:#4A6FF3;}
.d2-616571211 .color-AA4{color:#EDF0FD;}
.d2-616571211 .color-AA5{color:#F7F8FE;}
.d2-616571211 .color-AB4{color:#EDF0FD;}
.d2-616571211 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="hy"><g class="shape" ><rect x="12.000000" y="12.000000" width="98.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="61.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&amp;</text><title>beans &amp; rice</title></g><g transform="translate(94 -4)" class="appendix-icon"><title>beans &amp; rice</title><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3427_35082111)">
<path d="M16 31.1109C24.3456 31.1109 31.1111 24.3454 31.1111 15.9998C31.1111 7.65415 24.3456 0.888672 16 0.888672C7.65436 0.888672 0.888885 7.65415 0.888885 15.9998C0.888885 24.3454 7.65436 31.1109 16 31.1109Z" fill="white" stroke="#DEE1EB"/>
<path d="M16 26C21.5228 26 26 21.5228 26 16C26 10.4772 21.5228 6 16 6C10.4772 6 6 10.4772 6 16C6 21.5228 10.4772 26 16 26Z" stroke="#2E3346" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
@ -105,9 +105,7 @@
</clipPath>
</defs>
</svg>
</g><mask id="d2-185267393" maskUnits="userSpaceOnUse" x="11" y="-6" width="290" height="85">
<rect x="11" y="-6" width="290" height="85" fill="white"></rect>
</g><mask id="d2-616571211" maskUnits="userSpaceOnUse" x="11" y="-6" width="117" height="85">
<rect x="11" y="-6" width="117" height="85" fill="white"></rect>
<rect x="50.500000" y="34.500000" width="21" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="152.500000" y="34.500000" width="24" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="241.500000" y="34.500000" width="36" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

1229
testdata/d2ir/TestCompile/filters/array.exp.json generated vendored Normal file

File diff suppressed because it is too large Load diff

560
testdata/d2ir/TestCompile/filters/base#01.exp.json generated vendored Normal file
View file

@ -0,0 +1,560 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/base#01.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,7:1:62-7:18:79",
"ampersand": true,
"key": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/base#01.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,0:0:0-2:1:25",
"key": {
"range": "TestCompile/filters/base#01.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/base#01.d2,0:7:7-2:1:25",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
]
}
}
}
}
}
]
},
{
"name": "jeremy",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/base#01.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,7:1:62-7:18:79",
"ampersand": true,
"key": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
},
{
"name": "label",
"primary": {
"value": {
"range": "TestCompile/filters/base#01.d2,8:8:88-8:23:103",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/base#01.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,8:1:81-8:6:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,8:1:81-8:23:103",
"key": {
"range": "TestCompile/filters/base#01.d2,8:1:81-8:6:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,8:8:88-8:23:103",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/base#01.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
},
"key_path": {
"range": "TestCompile/filters/base#01.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base#01.d2,3:0:26-5:1:55",
"key": {
"range": "TestCompile/filters/base#01.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/base#01.d2,3:8:34-5:1:55",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base#01.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}

560
testdata/d2ir/TestCompile/filters/base.exp.json generated vendored Normal file
View file

@ -0,0 +1,560 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/base.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,7:1:62-7:18:79",
"ampersand": true,
"key": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/base.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,0:0:0-2:1:25",
"key": {
"range": "TestCompile/filters/base.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/base.d2,0:7:7-2:1:25",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/base.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
]
}
}
}
}
}
]
},
{
"name": "jeremy",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/base.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,7:1:62-7:18:79",
"ampersand": true,
"key": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
},
{
"name": "label",
"primary": {
"value": {
"range": "TestCompile/filters/base.d2,8:8:88-8:23:103",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/base.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,8:1:81-8:6:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,8:1:81-8:23:103",
"key": {
"range": "TestCompile/filters/base.d2,8:1:81-8:6:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,8:8:88-8:23:103",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/base.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
},
"key_path": {
"range": "TestCompile/filters/base.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/base.d2,3:0:26-5:1:55",
"key": {
"range": "TestCompile/filters/base.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/base.d2,3:8:34-5:1:55",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/base.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/base.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/base.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}

2696
testdata/d2ir/TestCompile/filters/edge.exp.json generated vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,749 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "style",
"composite": {
"fields": [
{
"name": "fill",
"primary": {
"value": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:10:25",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
}
]
},
{
"name": "multiple",
"primary": {
"value": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:11:37-2:15:41",
"value": true
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:15:41",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:11:37-2:15:41",
"value": true
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-3:1:43",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:13:13-3:1:43",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:10:25",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:15:41",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:11:37-2:15:41",
"value": true
}
}
}
}
]
}
}
}
}
}
]
},
{
"name": "&style",
"composite": {
"fields": [
{
"name": "fill",
"primary": {
"value": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:8:65-6:11:68",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:11:68",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:8:65-6:11:68",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
}
]
},
{
"name": "multiple",
"primary": {
"value": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:12:81-7:16:85",
"value": true
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:16:85",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:12:81-7:16:85",
"value": true
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:2:47-5:8:53",
"value": [
{
"string": "&style",
"raw_string": "&style"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:0:45-5:8:53",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:0:45-5:1:46",
"value": [
{
"string": "*",
"raw_string": "*"
}
],
"pattern": [
"*"
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:2:47-5:8:53",
"value": [
{
"string": "&style",
"raw_string": "&style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:0:45-8:1:87",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:0:45-5:8:53",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:0:45-5:1:46",
"value": [
{
"string": "*",
"raw_string": "*"
}
],
"pattern": [
"*"
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:2:47-5:8:53",
"value": [
{
"string": "&style",
"raw_string": "&style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/bad-syntax.d2,5:10:55-8:1:87",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:11:68",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:2:59-6:6:63",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,6:8:65-6:11:68",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:16:85",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:2:71-7:10:79",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/bad-syntax.d2,7:12:81-7:16:85",
"value": true
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-3:1:43",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/bad-syntax.d2,0:13:13-3:1:43",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:10:25",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:15:41",
"key": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/bad-syntax.d2,2:11:37-2:15:41",
"value": true
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}

View file

@ -0,0 +1,449 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "style",
"composite": {
"fields": [
{
"name": "fill",
"primary": {
"value": {
"range": "TestCompile/filters/errors/composite.d2,8:7:73-8:10:76",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:10:76",
"key": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:7:73-8:10:76",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
}
]
},
{
"name": "multiple",
"primary": {
"value": {
"range": "TestCompile/filters/errors/composite.d2,9:11:88-9:15:92",
"value": true
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:15:92",
"key": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/composite.d2,9:11:88-9:15:92",
"value": true
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/composite.d2,7:6:57-7:11:62",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:11:62",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:5:56",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:6:57-7:11:62",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-10:1:94",
"key": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:11:62",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:5:56",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:6:57-7:11:62",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/composite.d2,7:13:64-10:1:94",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:10:76",
"key": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:7:73-8:10:76",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:15:92",
"key": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/composite.d2,9:11:88-9:15:92",
"value": true
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:5:56",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:11:62",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:5:56",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:6:57-7:11:62",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-10:1:94",
"key": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:11:62",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:0:51-7:5:56",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,7:6:57-7:11:62",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/composite.d2,7:13:64-10:1:94",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:10:76",
"key": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:1:67-8:5:71",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,8:7:73-8:10:76",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:15:92",
"key": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/composite.d2,9:1:78-9:9:86",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/composite.d2,9:11:88-9:15:92",
"value": true
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}

View file

@ -0,0 +1,750 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "style",
"composite": {
"fields": [
{
"name": "fill",
"primary": {
"value": {
"range": "TestCompile/filters/errors/no-glob.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:10:25",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
}
]
},
{
"name": "multiple",
"primary": {
"value": {
"range": "TestCompile/filters/errors/no-glob.d2,2:11:37-2:15:41",
"value": true
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:15:41",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/no-glob.d2,2:11:37-2:15:41",
"value": true
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-3:1:43",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/no-glob.d2,0:13:13-3:1:43",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:10:25",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:15:41",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/no-glob.d2,2:11:37-2:15:41",
"value": true
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-3:1:43",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:11:11",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,0:6:6-0:11:11",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/no-glob.d2,0:13:13-3:1:43",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:10:25",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:1:16-1:5:20",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,1:7:22-1:10:25",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:15:41",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,2:1:27-2:9:35",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/no-glob.d2,2:11:37-2:15:41",
"value": true
}
}
}
}
]
}
}
}
}
}
]
},
{
"name": "jasmine",
"composite": {
"fields": [
{
"name": "style",
"composite": {
"fields": null,
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:8:53-5:13:58",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:13:58",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:7:52",
"value": [
{
"string": "jasmine",
"raw_string": "jasmine"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:8:53-5:13:58",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-8:1:94",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:13:58",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:7:52",
"value": [
{
"string": "jasmine",
"raw_string": "jasmine"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:8:53-5:13:58",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/no-glob.d2,5:15:60-8:1:94",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,6:2:64-6:12:74",
"ampersand": true,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,6:3:65-6:7:69",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,6:3:65-6:7:69",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,6:9:71-6:12:74",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,7:2:77-7:17:92",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,7:2:77-7:10:85",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,7:2:77-7:10:85",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/no-glob.d2,7:12:87-7:17:92",
"value": false
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:7:52",
"value": [
{
"string": "jasmine",
"raw_string": "jasmine"
}
]
},
"key_path": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:13:58",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:7:52",
"value": [
{
"string": "jasmine",
"raw_string": "jasmine"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:8:53-5:13:58",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-8:1:94",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:13:58",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:0:45-5:7:52",
"value": [
{
"string": "jasmine",
"raw_string": "jasmine"
}
]
}
},
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,5:8:53-5:13:58",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/errors/no-glob.d2,5:15:60-8:1:94",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,6:2:64-6:12:74",
"ampersand": true,
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,6:3:65-6:7:69",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,6:3:65-6:7:69",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,6:9:71-6:12:74",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
},
{
"map_key": {
"range": "TestCompile/filters/errors/no-glob.d2,7:2:77-7:17:92",
"key": {
"range": "TestCompile/filters/errors/no-glob.d2,7:2:77-7:10:85",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/errors/no-glob.d2,7:2:77-7:10:85",
"value": [
{
"string": "multiple",
"raw_string": "multiple"
}
]
}
}
]
},
"primary": {},
"value": {
"boolean": {
"range": "TestCompile/filters/errors/no-glob.d2,7:12:87-7:17:92",
"value": false
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}

560
testdata/d2ir/TestCompile/filters/escaped.exp.json generated vendored Normal file
View file

@ -0,0 +1,560 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/escaped.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,7:1:62-7:18:79",
"ampersand": true,
"key": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/escaped.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,0:0:0-2:1:25",
"key": {
"range": "TestCompile/filters/escaped.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/escaped.d2,0:7:7-2:1:25",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
]
}
}
}
}
}
]
},
{
"name": "jeremy",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/escaped.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,7:1:62-7:18:79",
"ampersand": true,
"key": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,7:2:63-7:7:68",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,7:9:70-7:18:79",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
},
{
"name": "label",
"primary": {
"value": {
"range": "TestCompile/filters/escaped.d2,8:8:88-8:23:103",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/escaped.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,8:1:81-8:6:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,8:1:81-8:23:103",
"key": {
"range": "TestCompile/filters/escaped.d2,8:1:81-8:6:86",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,8:1:81-8:6:86",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,8:8:88-8:23:103",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/escaped.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
},
"key_path": {
"range": "TestCompile/filters/escaped.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/escaped.d2,3:0:26-5:1:55",
"key": {
"range": "TestCompile/filters/escaped.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/escaped.d2,3:8:34-5:1:55",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/escaped.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}

560
testdata/d2ir/TestCompile/filters/order.exp.json generated vendored Normal file
View file

@ -0,0 +1,560 @@
{
"fields": [
{
"name": "jacob",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/order.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,8:1:86-8:18:103",
"ampersand": true,
"key": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,8:9:94-8:18:103",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/order.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,0:0:0-2:1:25",
"key": {
"range": "TestCompile/filters/order.d2,0:0:0-0:5:5",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,0:0:0-0:5:5",
"value": [
{
"string": "jacob",
"raw_string": "jacob"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/order.d2,0:7:7-2:1:25",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/order.d2,1:1:10-1:14:23",
"key": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,1:1:10-1:6:15",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,1:8:17-1:14:23",
"value": [
{
"string": "circle",
"raw_string": "circle"
}
]
}
}
}
}
]
}
}
}
}
}
]
},
{
"name": "jeremy",
"composite": {
"fields": [
{
"name": "shape",
"primary": {
"value": {
"range": "TestCompile/filters/order.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
},
{
"string": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,8:1:86-8:18:103",
"ampersand": true,
"key": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,8:2:87-8:7:92",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,8:9:94-8:18:103",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
}
]
},
{
"name": "label",
"primary": {
"value": {
"range": "TestCompile/filters/order.d2,7:8:69-7:23:84",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
},
"references": [
{
"string": {
"range": "TestCompile/filters/order.d2,7:1:62-7:6:67",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,7:1:62-7:6:67",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,7:1:62-7:6:67",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,7:1:62-7:23:84",
"key": {
"range": "TestCompile/filters/order.d2,7:1:62-7:6:67",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,7:1:62-7:6:67",
"value": [
{
"string": "label",
"raw_string": "label"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,7:8:69-7:23:84",
"value": [
{
"string": "I'm a rectangle",
"raw_string": "I'm a rectangle"
}
]
}
}
}
}
}
]
}
],
"edges": null
},
"references": [
{
"string": {
"range": "TestCompile/filters/order.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
},
"key_path": {
"range": "TestCompile/filters/order.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"context": {
"edge": null,
"key": {
"range": "TestCompile/filters/order.d2,3:0:26-5:1:55",
"key": {
"range": "TestCompile/filters/order.d2,3:0:26-3:6:32",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,3:0:26-3:6:32",
"value": [
{
"string": "jeremy",
"raw_string": "jeremy"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "TestCompile/filters/order.d2,3:8:34-5:1:55",
"nodes": [
{
"map_key": {
"range": "TestCompile/filters/order.d2,4:1:37-4:17:53",
"key": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"path": [
{
"unquoted_string": {
"range": "TestCompile/filters/order.d2,4:1:37-4:6:42",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "TestCompile/filters/order.d2,4:8:44-4:17:53",
"value": [
{
"string": "rectangle",
"raw_string": "rectangle"
}
]
}
}
}
}
]
}
}
}
}
}
]
}
],
"edges": null
}