Merge pull request #1797 from alixander/d2oracle-set-imports

d2oracle set imports
This commit is contained in:
Alexander Wang 2024-01-02 13:30:04 -08:00 committed by GitHub
commit d15d5b17fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 1170 additions and 107 deletions

View file

@ -391,6 +391,9 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string)
maybeNewScope = ref.MapKey.Value.Map maybeNewScope = ref.MapKey.Value.Map
} }
} }
} else if IsImported(g, obj) {
appendMapKey(scope, mk)
return nil
} else { } else {
maybeNewScope = obj.Map maybeNewScope = obj.Map
} }

View file

@ -2,9 +2,6 @@ package d2oracle_test
import ( import (
"fmt" "fmt"
"io"
"io/fs"
"os"
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings" "strings"
@ -13,6 +10,7 @@ import (
"oss.terrastruct.com/util-go/assert" "oss.terrastruct.com/util-go/assert"
"oss.terrastruct.com/util-go/diff" "oss.terrastruct.com/util-go/diff"
"oss.terrastruct.com/util-go/go2" "oss.terrastruct.com/util-go/go2"
"oss.terrastruct.com/util-go/mapfs"
"oss.terrastruct.com/util-go/xjson" "oss.terrastruct.com/util-go/xjson"
"oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2compiler"
@ -1999,7 +1997,7 @@ scenarios: {
} }
`, `,
fsTexts: map[string]string{ fsTexts: map[string]string{
"meow": `x: { "meow.d2": `x: {
style.fill: blue style.fill: blue
} }
`, `,
@ -2022,7 +2020,7 @@ scenarios: {
} }
`, `,
fsTexts: map[string]string{ fsTexts: map[string]string{
"meow": `x: { "meow.d2": `x: {
style.fill: blue style.fill: blue
} }
`, `,
@ -2046,7 +2044,7 @@ scenarios: {
} }
`, `,
fsTexts: map[string]string{ fsTexts: map[string]string{
"meow": `x: { "meow.d2": `x: {
style.fill: blue style.fill: blue
} }
`, `,
@ -2058,6 +2056,55 @@ scenarios: {
y y
style.fill: yellow style.fill: yellow
} }
`,
},
{
name: "import/4",
text: `...@yo
a`,
fsTexts: map[string]string{
"yo.d2": `b`,
},
key: `b.style.fill`,
value: go2.Pointer(`red`),
exp: `...@yo
a
b.style.fill: red
`,
},
{
name: "import/5",
text: `a
x: {
...@yo
}`,
fsTexts: map[string]string{
"yo.d2": `b`,
},
key: `x.b.style.fill`,
value: go2.Pointer(`red`),
exp: `a
x: {
...@yo
b.style.fill: red
}
`,
},
{
name: "import/6",
text: `a
x: @yo`,
fsTexts: map[string]string{
"yo.d2": `b`,
},
key: `x.b.style.fill`,
value: go2.Pointer(`red`),
exp: `a
x: @yo
x.b.style.fill: red
`, `,
}, },
} }
@ -7081,17 +7128,23 @@ type editTest struct {
} }
func (tc editTest) run(t *testing.T) { func (tc editTest) run(t *testing.T) {
var tfs *mapfs.FS
d2Path := fmt.Sprintf("d2/testdata/d2oracle/%v.d2", t.Name()) d2Path := fmt.Sprintf("d2/testdata/d2oracle/%v.d2", t.Name())
tfs := testFS(make(map[string]*testF)) if tc.fsTexts != nil {
for name, text := range tc.fsTexts { tc.fsTexts["index.d2"] = tc.text
tfs[name] = &testF{content: text} d2Path = "index.d2"
var err error
tfs, err = mapfs.New(tc.fsTexts)
assert.Success(t, err)
t.Cleanup(func() {
assert.Success(t, tfs.Close())
})
} }
g, _, err := d2compiler.Compile(d2Path, strings.NewReader(tc.text), &d2compiler.CompileOptions{ g, _, err := d2compiler.Compile(d2Path, strings.NewReader(tc.text), &d2compiler.CompileOptions{
FS: tfs, FS: tfs,
}) })
if err != nil { assert.Success(t, err)
t.Fatal(err)
}
g, err = tc.testFunc(g) g, err = tc.testFunc(g)
if tc.expErr != "" { if tc.expErr != "" {
@ -8446,38 +8499,3 @@ scenarios: {
}) })
} }
} }
type testF struct {
content string
readIndex int
}
func (tf *testF) Close() error {
return nil
}
func (tf *testF) Read(p []byte) (int, error) {
data := []byte(tf.content)
if tf.readIndex >= len(data) {
tf.readIndex = 0
return 0, io.EOF
}
readBytes := copy(p, data[tf.readIndex:])
tf.readIndex += readBytes
return readBytes, nil
}
func (tf *testF) Stat() (os.FileInfo, error) {
return nil, nil
}
type testFS map[string]*testF
func (tfs testFS) Open(name string) (fs.File, error) {
for k := range tfs {
if strings.HasSuffix(name[:len(name)-3], k) {
return tfs[k], nil
}
}
return nil, fs.ErrNotExist
}

View file

@ -140,6 +140,16 @@ func GetParentID(g *d2graph.Graph, boardPath []string, absID string) (string, er
return obj.Parent.AbsID(), nil return obj.Parent.AbsID(), nil
} }
func IsImported(g *d2graph.Graph, obj *d2graph.Object) bool {
for _, ref := range obj.References {
if ref.MapKey.Range.Path == g.AST.Range.Path {
return false
}
}
return true
}
func GetObj(g *d2graph.Graph, boardPath []string, absID string) *d2graph.Object { func GetObj(g *d2graph.Graph, boardPath []string, absID string) *d2graph.Object {
g = GetBoardGraph(g, boardPath) g = GetBoardGraph(g, boardPath)
if g == nil { if g == nil {

View file

@ -3,17 +3,17 @@
"name": "", "name": "",
"isFolderOnly": false, "isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:0:0-5:0:44", "range": "index.d2,0:0:0-5:0:44",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:0:0-4:1:43", "range": "index.d2,0:0:0-4:1:43",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -27,17 +27,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:3:3-4:1:43", "range": "index.d2,0:3:3-4:1:43",
"nodes": [ "nodes": [
{ {
"import": { "import": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,1:2:7-1:12:17", "range": "index.d2,1:2:7-1:12:17",
"spread": true, "spread": true,
"pre": "", "pre": "",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,1:6:11-1:10:15", "range": "index.d2,1:6:11-1:10:15",
"value": [ "value": [
{ {
"string": "meow", "string": "meow",
@ -48,7 +48,7 @@
}, },
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,1:11:16-1:12:17", "range": "index.d2,1:11:16-1:12:17",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -62,13 +62,13 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"value": [ "value": [
{ {
"string": "y", "string": "y",
@ -85,13 +85,13 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,3:2:24-3:19:41", "range": "index.d2,3:2:24-3:19:41",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,3:2:24-3:14:36", "range": "index.d2,3:2:24-3:14:36",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,3:2:24-3:7:29", "range": "index.d2,3:2:24-3:7:29",
"value": [ "value": [
{ {
"string": "style", "string": "style",
@ -102,7 +102,7 @@
}, },
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,3:8:30-3:14:36", "range": "index.d2,3:8:30-3:14:36",
"value": [ "value": [
{ {
"string": "stroke", "string": "stroke",
@ -116,7 +116,7 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,3:16:38-3:19:41", "range": "index.d2,3:16:38-3:19:41",
"value": [ "value": [
{ {
"string": "red", "string": "red",
@ -165,11 +165,11 @@
"references": [ "references": [
{ {
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -217,11 +217,11 @@
"references": [ "references": [
{ {
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/1.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"value": [ "value": [
{ {
"string": "y", "string": "y",

View file

@ -3,17 +3,17 @@
"name": "", "name": "",
"isFolderOnly": false, "isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:0:0-5:0:42", "range": "index.d2,0:0:0-5:0:42",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:0:0-4:1:41", "range": "index.d2,0:0:0-4:1:41",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -27,17 +27,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:3:3-4:1:41", "range": "index.d2,0:3:3-4:1:41",
"nodes": [ "nodes": [
{ {
"import": { "import": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,1:2:7-1:12:17", "range": "index.d2,1:2:7-1:12:17",
"spread": true, "spread": true,
"pre": "", "pre": "",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,1:6:11-1:10:15", "range": "index.d2,1:6:11-1:10:15",
"value": [ "value": [
{ {
"string": "meow", "string": "meow",
@ -48,7 +48,7 @@
}, },
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,1:11:16-1:12:17", "range": "index.d2,1:11:16-1:12:17",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -62,13 +62,13 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"value": [ "value": [
{ {
"string": "y", "string": "y",
@ -85,13 +85,13 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,3:2:24-3:17:39", "range": "index.d2,3:2:24-3:17:39",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,3:2:24-3:12:34", "range": "index.d2,3:2:24-3:12:34",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,3:2:24-3:7:29", "range": "index.d2,3:2:24-3:7:29",
"value": [ "value": [
{ {
"string": "style", "string": "style",
@ -102,7 +102,7 @@
}, },
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,3:8:30-3:12:34", "range": "index.d2,3:8:30-3:12:34",
"value": [ "value": [
{ {
"string": "fill", "string": "fill",
@ -116,7 +116,7 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,3:14:36-3:17:39", "range": "index.d2,3:14:36-3:17:39",
"value": [ "value": [
{ {
"string": "red", "string": "red",
@ -165,11 +165,11 @@
"references": [ "references": [
{ {
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -214,11 +214,11 @@
"references": [ "references": [
{ {
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/2.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"value": [ "value": [
{ {
"string": "y", "string": "y",

View file

@ -3,17 +3,17 @@
"name": "", "name": "",
"isFolderOnly": false, "isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:0:0-5:0:45", "range": "index.d2,0:0:0-5:0:45",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:0:0-4:1:44", "range": "index.d2,0:0:0-4:1:44",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -27,17 +27,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:3:3-4:1:44", "range": "index.d2,0:3:3-4:1:44",
"nodes": [ "nodes": [
{ {
"import": { "import": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,1:2:7-1:12:17", "range": "index.d2,1:2:7-1:12:17",
"spread": true, "spread": true,
"pre": "", "pre": "",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,1:6:11-1:10:15", "range": "index.d2,1:6:11-1:10:15",
"value": [ "value": [
{ {
"string": "meow", "string": "meow",
@ -48,7 +48,7 @@
}, },
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,1:11:16-1:12:17", "range": "index.d2,1:11:16-1:12:17",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -62,13 +62,13 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"value": [ "value": [
{ {
"string": "y", "string": "y",
@ -85,13 +85,13 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,3:2:24-3:20:42", "range": "index.d2,3:2:24-3:20:42",
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,3:2:24-3:12:34", "range": "index.d2,3:2:24-3:12:34",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,3:2:24-3:7:29", "range": "index.d2,3:2:24-3:7:29",
"value": [ "value": [
{ {
"string": "style", "string": "style",
@ -102,7 +102,7 @@
}, },
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,3:8:30-3:12:34", "range": "index.d2,3:8:30-3:12:34",
"value": [ "value": [
{ {
"string": "fill", "string": "fill",
@ -116,7 +116,7 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,3:14:36-3:20:42", "range": "index.d2,3:14:36-3:20:42",
"value": [ "value": [
{ {
"string": "yellow", "string": "yellow",
@ -165,11 +165,11 @@
"references": [ "references": [
{ {
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,0:0:0-0:1:1", "range": "index.d2,0:0:0-0:1:1",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -214,11 +214,11 @@
"references": [ "references": [
{ {
"key": { "key": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/import/3.d2,2:2:20-2:3:21", "range": "index.d2,2:2:20-2:3:21",
"value": [ "value": [
{ {
"string": "y", "string": "y",

272
testdata/d2oracle/TestSet/import/4.exp.json generated vendored Normal file
View file

@ -0,0 +1,272 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"ast": {
"range": "index.d2,0:0:0-3:0:27",
"nodes": [
{
"import": {
"range": "index.d2,0:0:0-0:6:6",
"spread": true,
"pre": "",
"path": [
{
"unquoted_string": {
"range": "index.d2,0:4:4-0:6:6",
"value": [
{
"string": "yo",
"raw_string": "yo"
}
]
}
}
]
}
},
{
"map_key": {
"range": "index.d2,1:0:7-1:1:8",
"key": {
"range": "index.d2,1:0:7-1:1:8",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:0:7-1:1:8",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"primary": {},
"value": {}
}
},
{
"map_key": {
"range": "index.d2,2:0:9-2:17:26",
"key": {
"range": "index.d2,2:0:9-2:12:21",
"path": [
{
"unquoted_string": {
"range": "index.d2,2:0:9-2:1:10",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:2:11-2:7:16",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:8:17-2:12:21",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "index.d2,2:14:23-2:17:26",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"attributes": {
"label": {
"value": ""
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "b",
"id_val": "b",
"references": [
{
"key": {
"range": "yo.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "yo.d2,0:0:0-0:1:1",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
},
{
"key": {
"range": "index.d2,2:0:9-2:12:21",
"path": [
{
"unquoted_string": {
"range": "index.d2,2:0:9-2:1:10",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:2:11-2:7:16",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:8:17-2:12:21",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "b"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {
"fill": {
"value": "red"
}
},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
{
"id": "a",
"id_val": "a",
"references": [
{
"key": {
"range": "index.d2,1:0:7-1:1:8",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:0:7-1:1:8",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "a"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
}
]
},
"err": "<nil>"
}

346
testdata/d2oracle/TestSet/import/5.exp.json generated vendored Normal file
View file

@ -0,0 +1,346 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"ast": {
"range": "index.d2,0:0:0-5:0:38",
"nodes": [
{
"map_key": {
"range": "index.d2,0:0:0-0:1:1",
"key": {
"range": "index.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "index.d2,0:0:0-0:1:1",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"primary": {},
"value": {}
}
},
{
"map_key": {
"range": "index.d2,1:0:2-4:1:37",
"key": {
"range": "index.d2,1:0:2-1:1:3",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:0:2-1:1:3",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "index.d2,1:3:5-4:1:37",
"nodes": [
{
"import": {
"range": "index.d2,2:2:9-2:8:15",
"spread": true,
"pre": "",
"path": [
{
"unquoted_string": {
"range": "index.d2,2:6:13-2:8:15",
"value": [
{
"string": "yo",
"raw_string": "yo"
}
]
}
}
]
}
},
{
"map_key": {
"range": "index.d2,3:2:18-3:19:35",
"key": {
"range": "index.d2,3:2:18-3:14:30",
"path": [
{
"unquoted_string": {
"range": "index.d2,3:2:18-3:3:19",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,3:4:20-3:9:25",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,3:10:26-3:14:30",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "index.d2,3:16:32-3:19:35",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"attributes": {
"label": {
"value": ""
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "a",
"id_val": "a",
"references": [
{
"key": {
"range": "index.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "index.d2,0:0:0-0:1:1",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "a"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
{
"id": "b",
"id_val": "b",
"references": [
{
"key": {
"range": "yo.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "yo.d2,0:0:0-0:1:1",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
},
{
"key": {
"range": "index.d2,3:2:18-3:14:30",
"path": [
{
"unquoted_string": {
"range": "index.d2,3:2:18-3:3:19",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,3:4:20-3:9:25",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,3:10:26-3:14:30",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "b"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {
"fill": {
"value": "red"
}
},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
{
"id": "x",
"id_val": "x",
"references": [
{
"key": {
"range": "index.d2,1:0:2-1:1:3",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:0:2-1:1:3",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "x"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
}
]
},
"err": "<nil>"
}

414
testdata/d2oracle/TestSet/import/6.exp.json generated vendored Normal file
View file

@ -0,0 +1,414 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"ast": {
"range": "index.d2,0:0:0-3:0:29",
"nodes": [
{
"map_key": {
"range": "index.d2,0:0:0-0:1:1",
"key": {
"range": "index.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "index.d2,0:0:0-0:1:1",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"primary": {},
"value": {}
}
},
{
"map_key": {
"range": "index.d2,1:0:2-1:6:8",
"key": {
"range": "index.d2,1:0:2-1:1:3",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:0:2-1:1:3",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"primary": {},
"value": {
"import": {
"range": "index.d2,1:3:5-1:6:8",
"spread": false,
"pre": "",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:4:6-1:6:8",
"value": [
{
"string": "yo",
"raw_string": "yo"
}
]
}
}
]
}
}
}
},
{
"map_key": {
"range": "index.d2,2:0:9-2:19:28",
"key": {
"range": "index.d2,2:0:9-2:14:23",
"path": [
{
"unquoted_string": {
"range": "index.d2,2:0:9-2:1:10",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:2:11-2:3:12",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:4:13-2:9:18",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:10:19-2:14:23",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "index.d2,2:16:25-2:19:28",
"value": [
{
"string": "red",
"raw_string": "red"
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"attributes": {
"label": {
"value": ""
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "a",
"id_val": "a",
"references": [
{
"key": {
"range": "index.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "index.d2,0:0:0-0:1:1",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "a"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
{
"id": "b",
"id_val": "b",
"references": [
{
"key": {
"range": "yo.d2,0:0:0-0:1:1",
"path": [
{
"unquoted_string": {
"range": "yo.d2,0:0:0-0:1:1",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
},
{
"key": {
"range": "index.d2,2:0:9-2:14:23",
"path": [
{
"unquoted_string": {
"range": "index.d2,2:0:9-2:1:10",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:2:11-2:3:12",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:4:13-2:9:18",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:10:19-2:14:23",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"key_path_index": 1,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "b"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {
"fill": {
"value": "red"
}
},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
{
"id": "x",
"id_val": "x",
"references": [
{
"key": {
"range": "index.d2,1:0:2-1:1:3",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:0:2-1:1:3",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
},
{
"key": {
"range": "index.d2,2:0:9-2:14:23",
"path": [
{
"unquoted_string": {
"range": "index.d2,2:0:9-2:1:10",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:2:11-2:3:12",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:4:13-2:9:18",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "index.d2,2:10:19-2:14:23",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "x"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
}
]
},
"err": "<nil>"
}