Skip to content

Commit 9921892

Browse files
committed
fix for broken test cased
1 parent 9603f1a commit 9921892

File tree

1 file changed

+35
-12
lines changed

1 file changed

+35
-12
lines changed

d2compiler/compile.go

+35-12
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,18 @@ func (c *compiler) compileField(obj *d2graph.Object, f *d2ir.Field) {
383383

384384
} else if isReserved {
385385
c.compileReserved(&obj.Attributes, f)
386-
if keyword != "icon" {
387-
return
386+
if keyword == "icon" && f.Map() != nil {
387+
for _, ff := range f.Map().Fields {
388+
if ff.Name.ScalarString() == "style" && ff.Name.IsUnquoted() {
389+
if f.Map() == nil || len(f.Map().Fields) == 0 {
390+
c.errorf(f.LastRef().AST(), `"style" expected to be set to a map of key-values, or contain an additional keyword like "style.opacity: 0.4"`)
391+
return
392+
}
393+
c.compileIconStyle(&obj.Attributes, ff.Map())
394+
}
395+
}
388396
}
397+
return
389398
} else if f.Name.ScalarString() == "style" && f.Name.IsUnquoted() {
390399
if f.Map() == nil || len(f.Map().Fields) == 0 {
391400
c.errorf(f.LastRef().AST(), `"style" expected to be set to a map of key-values, or contain an additional keyword like "style.opacity: 0.4"`)
@@ -475,10 +484,7 @@ func (c *compiler) compileLabel(attrs *d2graph.Attributes, f d2ir.Node) {
475484
}
476485
attrs.Label.Value = scalar.ScalarString()
477486
default:
478-
name := f.LastPrimaryKey().Key.Path[0].UnquotedString.Value[0].String
479-
if *name != "icon" {
480-
attrs.Label.Value = scalar.ScalarString()
481-
}
487+
attrs.Label.Value = scalar.ScalarString()
482488
}
483489
attrs.Label.MapKey = f.LastPrimaryKey()
484490
}
@@ -752,6 +758,12 @@ func (c *compiler) compileStyle(attrs *d2graph.Attributes, m *d2ir.Map) {
752758
}
753759
}
754760

761+
func (c *compiler) compileIconStyle(attrs *d2graph.Attributes, m *d2ir.Map) {
762+
for _, f := range m.Fields {
763+
c.compileIconStyleField(attrs, f)
764+
}
765+
}
766+
755767
func (c *compiler) compileStyleField(attrs *d2graph.Attributes, f *d2ir.Field) {
756768
if _, ok := d2ast.StyleKeywords[strings.ToLower(f.Name.ScalarString())]; !(ok && f.Name.IsUnquoted()) {
757769
c.errorf(f.LastRef().AST(), `invalid style keyword: "%s"`, f.Name.ScalarString())
@@ -763,14 +775,25 @@ func (c *compiler) compileStyleField(attrs *d2graph.Attributes, f *d2ir.Field) {
763775
compileStyleFieldInit(attrs, f)
764776
scalar := f.Primary().Value
765777

766-
parentKeyword := f.LastPrimaryKey().Key.Path[0].ScalarString()
778+
err := attrs.Style.Apply(f.Name.ScalarString(), scalar.ScalarString())
779+
if err != nil {
780+
c.errorf(scalar, err.Error())
781+
return
782+
}
783+
}
767784

768-
var err error
769-
if parentKeyword == "icon" {
770-
err = attrs.IconStyle.Apply(f.Name.ScalarString(), scalar.ScalarString())
771-
} else {
772-
err = attrs.Style.Apply(f.Name.ScalarString(), scalar.ScalarString())
785+
func (c *compiler) compileIconStyleField(attrs *d2graph.Attributes, f *d2ir.Field) {
786+
if _, ok := d2ast.StyleKeywords[strings.ToLower(f.Name.ScalarString())]; !(ok && f.Name.IsUnquoted()) {
787+
c.errorf(f.LastRef().AST(), `invalid style keyword: "%s"`, f.Name.ScalarString())
788+
return
773789
}
790+
if f.Primary() == nil {
791+
return
792+
}
793+
compileStyleFieldInit(attrs, f)
794+
scalar := f.Primary().Value
795+
796+
err := attrs.IconStyle.Apply(f.Name.ScalarString(), scalar.ScalarString())
774797
if err != nil {
775798
c.errorf(scalar, err.Error())
776799
return

0 commit comments

Comments
 (0)