diff --git a/d2format/format.go b/d2format/format.go index dc7430ec2..dd1a42996 100644 --- a/d2format/format.go +++ b/d2format/format.go @@ -358,6 +358,9 @@ func (p *printer) _map(m *d2ast.Map) { func (p *printer) mapKey(mk *d2ast.Key) { if mk.Ampersand { p.sb.WriteByte('&') + } else if mk.NotAmpersand { + p.sb.WriteByte('!') + p.sb.WriteByte('&') } if mk.Key != nil { p.key(mk.Key) diff --git a/d2format/format_test.go b/d2format/format_test.go index c6dd79296..369361f2c 100644 --- a/d2format/format_test.go +++ b/d2format/format_test.go @@ -829,6 +829,30 @@ mybox: { mybox: { label: prefix${test}suffix } +`, + }, + { + name: "not-filter", + in: `jacob: { + shape: circle +} +jeremy: { + shape: rectangle +} +*: { + !&shape: rectangle + label: I'm not a rectangle +}`, + exp: `jacob: { + shape: circle +} +jeremy: { + shape: rectangle +} +*: { + !&shape: rectangle + label: I'm not a rectangle +} `, }, }