From 69f40ae9fb4f0d6a9b0c3177f4a00e90d2adb6f2 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 31 May 2023 23:28:33 -0700 Subject: [PATCH] fix --- d2graph/d2graph.go | 28 ++++++++++------------------ d2ir/d2ir.go | 2 +- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index 6a0bfd51b..57f135d57 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -1618,9 +1618,6 @@ func Key(k *d2ast.KeyPath) []string { // All reserved keywords. See init below. var ReservedKeywords map[string]struct{} -// All reserved keywords not including style keywords. -var ReservedKeywords2 map[string]struct{} - // Non Style/Holder keywords. var SimpleReservedKeywords = map[string]struct{}{ "label": {}, @@ -1642,15 +1639,18 @@ var SimpleReservedKeywords = map[string]struct{}{ "vertical-gap": {}, "horizontal-gap": {}, "class": {}, - "classes": {}, } -// ReservedKeywordHolders are reserved keywords that can hold composites +// ReservedKeywordHolders are reserved keywords that are meaningless on its own and must hold composites var ReservedKeywordHolders = map[string]struct{}{ "style": {}, "source-arrowhead": {}, "target-arrowhead": {}, - "classes": {}, +} + +// CompositeReservedKeywords are reserved keywords that can hold composites +var CompositeReservedKeywords = map[string]struct{}{ + "classes": {}, } // StyleKeywords are reserved keywords which cannot exist outside of the "style" keyword @@ -1726,23 +1726,15 @@ func init() { ReservedKeywords[k] = v } for k, v := range ReservedKeywordHolders { - ReservedKeywords[k] = v + CompositeReservedKeywords[k] = v } for k, v := range BoardKeywords { + CompositeReservedKeywords[k] = v + } + for k, v := range CompositeReservedKeywords { ReservedKeywords[k] = v } - ReservedKeywords2 = make(map[string]struct{}) - for k, v := range SimpleReservedKeywords { - ReservedKeywords2[k] = v - } - for k, v := range ReservedKeywordHolders { - ReservedKeywords2[k] = v - } - for k, v := range BoardKeywords { - ReservedKeywords2[k] = v - } - NearConstants = make(map[string]struct{}, len(NearConstantsArray)) for _, k := range NearConstantsArray { NearConstants[k] = struct{}{} diff --git a/d2ir/d2ir.go b/d2ir/d2ir.go index 6f0ad2c67..bf4b6cdd9 100644 --- a/d2ir/d2ir.go +++ b/d2ir/d2ir.go @@ -669,7 +669,7 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext) (*Field, if _, ok := d2graph.ReservedKeywords[strings.ToLower(head)]; ok { head = strings.ToLower(head) - if _, ok := d2graph.ReservedKeywordHolders[head]; !ok && i < len(kp.Path)-1 { + if _, ok := d2graph.CompositeReservedKeywords[head]; !ok && i < len(kp.Path)-1 { return nil, d2parser.Errorf(kp.Path[i].Unbox(), fmt.Sprintf(`"%s" must be the last part of the key`, head)) } }