set and replace position and dimensions

This commit is contained in:
Alexander Wang 2023-02-19 14:08:56 -08:00
parent e2ff44b6f7
commit 0c0e7d6134
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
5 changed files with 509 additions and 0 deletions

View file

@ -234,6 +234,26 @@ func _set(g *d2graph.Graph, key string, tag, value *string) error {
attrs.Shape.MapKey.SetScalar(mk.Value.ScalarBox())
return nil
}
case "width":
if attrs.Width != nil && attrs.Width.MapKey != nil {
attrs.Width.MapKey.SetScalar(mk.Value.ScalarBox())
return nil
}
case "height":
if attrs.Height != nil && attrs.Height.MapKey != nil {
attrs.Height.MapKey.SetScalar(mk.Value.ScalarBox())
return nil
}
case "top":
if attrs.Top != nil && attrs.Top.MapKey != nil {
attrs.Top.MapKey.SetScalar(mk.Value.ScalarBox())
return nil
}
case "left":
if attrs.Left != nil && attrs.Left.MapKey != nil {
attrs.Left.MapKey.SetScalar(mk.Value.ScalarBox())
return nil
}
case "style":
if len(mk.Key.Path[reservedIndex:]) != 2 {
return errors.New("malformed style setting, expected 2 part path")

View file

@ -695,6 +695,54 @@ square.style.opacity: 0.2
}
},
},
{
name: "set_position",
text: `square
`,
key: `square.top`,
value: go2.Pointer(`200`),
exp: `square: {top: 200}
`,
},
{
name: "replace_position",
text: `square: {
width: 100
top: 32
left: 44
}
`,
key: `square.top`,
value: go2.Pointer(`200`),
exp: `square: {
width: 100
top: 200
left: 44
}
`,
},
{
name: "set_dimensions",
text: `square
`,
key: `square.width`,
value: go2.Pointer(`200`),
exp: `square: {width: 200}
`,
},
{
name: "replace_dimensions",
text: `square: {
width: 100
}
`,
key: `square.width`,
value: go2.Pointer(`200`),
exp: `square: {
width: 200
}
`,
},
{
name: "label_unset",
text: `square: "Always try to do things in chronological order; it's less confusing that way."

147
testdata/d2oracle/TestSet/replace_dimensions.exp.json generated vendored Normal file
View file

@ -0,0 +1,147 @@
{
"graph": {
"name": "",
"ast": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:0:0-3:0:25",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:0:0-2:1:24",
"key": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:0:0-0:6:6",
"value": [
{
"string": "square",
"raw_string": "square"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:8:8-2:0:23",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,1:2:12-1:12:22",
"key": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,1:2:12-1:7:17",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,1:2:12-1:7:17",
"value": [
{
"string": "width",
"raw_string": "width"
}
]
}
}
]
},
"primary": {},
"value": {
"number": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,1:9:19-1:12:22",
"raw": "200",
"value": "200"
}
}
}
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"label_dimensions": {
"width": 0,
"height": 0
},
"attributes": {
"label": {
"value": ""
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "square",
"id_val": "square",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/replace_dimensions.d2,0:0:0-0:6:6",
"value": [
{
"string": "square",
"raw_string": "square"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "square"
},
"style": {},
"width": {
"value": "200"
},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
}
]
},
"err": "<nil>"
}

147
testdata/d2oracle/TestSet/set_dimensions.exp.json generated vendored Normal file
View file

@ -0,0 +1,147 @@
{
"graph": {
"name": "",
"ast": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:0:0-1:0:21",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:0:0-0:20:20",
"key": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:0:0-0:6:6",
"value": [
{
"string": "square",
"raw_string": "square"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:8:8-0:19:19",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:9:9-0:19:19",
"key": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:9:9-0:14:14",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:9:9-0:14:14",
"value": [
{
"string": "width",
"raw_string": "width"
}
]
}
}
]
},
"primary": {},
"value": {
"number": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:16:16-0:19:19",
"raw": "200",
"value": "200"
}
}
}
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"label_dimensions": {
"width": 0,
"height": 0
},
"attributes": {
"label": {
"value": ""
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "square",
"id_val": "square",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/set_dimensions.d2,0:0:0-0:6:6",
"value": [
{
"string": "square",
"raw_string": "square"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "square"
},
"style": {},
"width": {
"value": "200"
},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
}
]
},
"err": "<nil>"
}

147
testdata/d2oracle/TestSet/set_position.exp.json generated vendored Normal file
View file

@ -0,0 +1,147 @@
{
"graph": {
"name": "",
"ast": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:0:0-1:0:19",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:0:0-0:18:18",
"key": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:0:0-0:6:6",
"value": [
{
"string": "square",
"raw_string": "square"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:8:8-0:17:17",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:9:9-0:17:17",
"key": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:9:9-0:12:12",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:9:9-0:12:12",
"value": [
{
"string": "top",
"raw_string": "top"
}
]
}
}
]
},
"primary": {},
"value": {
"number": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:14:14-0:17:17",
"raw": "200",
"value": "200"
}
}
}
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"label_dimensions": {
"width": 0,
"height": 0
},
"attributes": {
"label": {
"value": ""
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "square",
"id_val": "square",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestSet/set_position.d2,0:0:0-0:6:6",
"value": [
{
"string": "square",
"raw_string": "square"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "square"
},
"style": {},
"top": {
"value": "200"
},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
}
]
},
"err": "<nil>"
}