This commit is contained in:
Alexander Wang 2023-02-20 19:41:40 -08:00
parent b5d2dba267
commit f15614066b
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE

View file

@ -111,6 +111,23 @@ func _set(g *d2graph.Graph, key string, tag, value *string) error {
toSkip := 1 toSkip := 1
reserved := false reserved := false
// If you're setting `(x -> y)[0].style.opacity`
// There's 3 cases you need to handle:
// 1. The edge has no map.
// 2. The edge has a style map with opacity not existing
// 3. The edge has a style map with opacity existing
//
// How each case is handled:
// 1. Append that mapkey to edge.
// 2. Append opacity to the style map
// 3. Set opacity
//
// There's certainly cleaner code to achieve this, but currently, there's a lot of logic to correctly scope, merge, append.
// The tests should be comprehensive enough for a safe refactor someday
//
// reservedKey = "style"
// reservedTargetKey = "opacity"
reservedKey := "" reservedKey := ""
reservedTargetKey := "" reservedTargetKey := ""
if mk.Key != nil { if mk.Key != nil {
@ -295,6 +312,9 @@ func _set(g *d2graph.Graph, key string, tag, value *string) error {
} }
if attrs != nil { if attrs != nil {
if reservedTargetKey == "" { if reservedTargetKey == "" {
if len(mk.Key.Path[reservedIndex:]) != 2 {
return errors.New("malformed style setting, expected 2 part path")
}
reservedTargetKey = mk.Key.Path[reservedIndex+1].Unbox().ScalarString() reservedTargetKey = mk.Key.Path[reservedIndex+1].Unbox().ScalarString()
} }
switch reservedTargetKey { switch reservedTargetKey {
@ -312,6 +332,9 @@ func _set(g *d2graph.Graph, key string, tag, value *string) error {
} }
case "style": case "style":
if reservedTargetKey == "" { if reservedTargetKey == "" {
if len(mk.Key.Path[reservedIndex:]) != 2 {
return errors.New("malformed style setting, expected 2 part path")
}
reservedTargetKey = mk.Key.Path[reservedIndex+1].Unbox().ScalarString() reservedTargetKey = mk.Key.Path[reservedIndex+1].Unbox().ScalarString()
} }
switch reservedTargetKey { switch reservedTargetKey {
@ -416,9 +439,6 @@ func _set(g *d2graph.Graph, key string, tag, value *string) error {
return nil return nil
} }
// func setStyleAttr(attr *d2graph.Attributes, k string, v *d2ast.Key) {
// }
func appendUniqueMapKey(m *d2ast.Map, mk *d2ast.Key) { func appendUniqueMapKey(m *d2ast.Map, mk *d2ast.Key) {
for _, n := range m.Nodes { for _, n := range m.Nodes {
if n.MapKey != nil && n.MapKey.Equals(mk) { if n.MapKey != nil && n.MapKey.Equals(mk) {