This commit is contained in:
Alexander Wang 2023-05-31 23:28:33 -07:00
parent febd237f34
commit 69f40ae9fb
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
2 changed files with 11 additions and 19 deletions

View file

@ -1618,9 +1618,6 @@ func Key(k *d2ast.KeyPath) []string {
// All reserved keywords. See init below. // All reserved keywords. See init below.
var ReservedKeywords map[string]struct{} var ReservedKeywords map[string]struct{}
// All reserved keywords not including style keywords.
var ReservedKeywords2 map[string]struct{}
// Non Style/Holder keywords. // Non Style/Holder keywords.
var SimpleReservedKeywords = map[string]struct{}{ var SimpleReservedKeywords = map[string]struct{}{
"label": {}, "label": {},
@ -1642,15 +1639,18 @@ var SimpleReservedKeywords = map[string]struct{}{
"vertical-gap": {}, "vertical-gap": {},
"horizontal-gap": {}, "horizontal-gap": {},
"class": {}, "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{}{ var ReservedKeywordHolders = map[string]struct{}{
"style": {}, "style": {},
"source-arrowhead": {}, "source-arrowhead": {},
"target-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 // StyleKeywords are reserved keywords which cannot exist outside of the "style" keyword
@ -1726,23 +1726,15 @@ func init() {
ReservedKeywords[k] = v ReservedKeywords[k] = v
} }
for k, v := range ReservedKeywordHolders { for k, v := range ReservedKeywordHolders {
ReservedKeywords[k] = v CompositeReservedKeywords[k] = v
} }
for k, v := range BoardKeywords { for k, v := range BoardKeywords {
CompositeReservedKeywords[k] = v
}
for k, v := range CompositeReservedKeywords {
ReservedKeywords[k] = v 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)) NearConstants = make(map[string]struct{}, len(NearConstantsArray))
for _, k := range NearConstantsArray { for _, k := range NearConstantsArray {
NearConstants[k] = struct{}{} NearConstants[k] = struct{}{}

View file

@ -669,7 +669,7 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext) (*Field,
if _, ok := d2graph.ReservedKeywords[strings.ToLower(head)]; ok { if _, ok := d2graph.ReservedKeywords[strings.ToLower(head)]; ok {
head = strings.ToLower(head) 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)) return nil, d2parser.Errorf(kp.Path[i].Unbox(), fmt.Sprintf(`"%s" must be the last part of the key`, head))
} }
} }