set and replace position and dimensions
This commit is contained in:
parent
e2ff44b6f7
commit
0c0e7d6134
5 changed files with 509 additions and 0 deletions
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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
147
testdata/d2oracle/TestSet/replace_dimensions.exp.json
generated
vendored
Normal 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
147
testdata/d2oracle/TestSet/set_dimensions.exp.json
generated
vendored
Normal 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
147
testdata/d2oracle/TestSet/set_position.exp.json
generated
vendored
Normal 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>"
|
||||
}
|
||||
Loading…
Reference in a new issue