ignore nulls when lazy globbing

This commit is contained in:
Alexander Wang 2025-02-26 15:06:48 -07:00
parent 80f560a844
commit f215870a3d
No known key found for this signature in database
GPG key ID: BE3937D0D52D8927
6 changed files with 875 additions and 7 deletions

View file

@ -858,12 +858,14 @@ func (c *compiler) _compileField(f *Field, refctx *RefContext) {
}
if len(refctx.Key.Edges) == 0 && (refctx.Key.Primary.Null != nil || refctx.Key.Value.Null != nil) {
// For vars, if we delete the field, it may just resolve to an outer scope var of the same name
// Instead we keep it around, so that resolveSubstitutions can find it
if !IsVar(ParentMap(f)) {
ParentMap(f).DeleteField(f.Name.ScalarString())
return
if !c.lazyGlobBeingApplied {
// For vars, if we delete the field, it may just resolve to an outer scope var of the same name
// Instead we keep it around, so that resolveSubstitutions can find it
if !IsVar(ParentMap(f)) {
ParentMap(f).DeleteField(f.Name.ScalarString())
}
}
return
}
if refctx.Key.Primary.Unbox() != nil {
@ -1143,7 +1145,9 @@ func (c *compiler) _compileEdges(refctx *RefContext) {
eida := NewEdgeIDs(refctx.Key)
for i, eid := range eida {
if !eid.Glob && (refctx.Key.Primary.Null != nil || refctx.Key.Value.Null != nil) {
refctx.ScopeMap.DeleteEdge(eid)
if !c.lazyGlobBeingApplied {
refctx.ScopeMap.DeleteEdge(eid)
}
continue
}
@ -1161,7 +1165,9 @@ func (c *compiler) _compileEdges(refctx *RefContext) {
}
for _, e := range ea {
if refctx.Key.Primary.Null != nil || refctx.Key.Value.Null != nil {
refctx.ScopeMap.DeleteEdge(e.ID)
if !c.lazyGlobBeingApplied {
refctx.ScopeMap.DeleteEdge(e.ID)
}
continue
}
e.References = append(e.References, &EdgeReference{

View file

@ -0,0 +1,316 @@
{
"name": "",
"config": {
"sketch": false,
"themeID": 0,
"darkThemeID": null,
"pad": null,
"center": null,
"layoutEngine": null
},
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "hello",
"type": "rectangle",
"pos": {
"x": 0,
"y": 50
},
"width": 80,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "hello",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 35,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "yes",
"type": "rectangle",
"pos": {
"x": 130,
"y": 20
},
"width": 123,
"height": 126,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "yes",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 38,
"labelHeight": 36,
"labelPosition": "OUTSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "yes.ok",
"type": "rectangle",
"pos": {
"x": 160,
"y": 50
},
"width": 63,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "ok",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 18,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "a",
"type": "rectangle",
"pos": {
"x": 303,
"y": 50
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "b",
"type": "rectangle",
"pos": {
"x": 303,
"y": 266
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [
{
"id": "(a -> b)[0]",
"src": "a",
"srcArrow": "none",
"dst": "b",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 329.5,
"y": 116
},
{
"x": 329.5,
"y": 156
},
{
"x": 329.5,
"y": 226
},
{
"x": 329.5,
"y": 266
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.6.9-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 358 354"><svg class="d2-3887617571 d2-svg" width="358" height="354" viewBox="-1 -21 358 354"><rect x="-1.000000" y="-21.000000" width="358.000000" height="354.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3887617571 .text {
font-family: "d2-3887617571-font-regular";
}
@font-face {
font-family: d2-3887617571-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-3887617571 .text-bold {
font-family: "d2-3887617571-font-bold";
}
@font-face {
font-family: d2-3887617571-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-3887617571 .fill-N1{fill:#0A0F25;}
.d2-3887617571 .fill-N2{fill:#676C7E;}
.d2-3887617571 .fill-N3{fill:#9499AB;}
.d2-3887617571 .fill-N4{fill:#CFD2DD;}
.d2-3887617571 .fill-N5{fill:#DEE1EB;}
.d2-3887617571 .fill-N6{fill:#EEF1F8;}
.d2-3887617571 .fill-N7{fill:#FFFFFF;}
.d2-3887617571 .fill-B1{fill:#0D32B2;}
.d2-3887617571 .fill-B2{fill:#0D32B2;}
.d2-3887617571 .fill-B3{fill:#E3E9FD;}
.d2-3887617571 .fill-B4{fill:#E3E9FD;}
.d2-3887617571 .fill-B5{fill:#EDF0FD;}
.d2-3887617571 .fill-B6{fill:#F7F8FE;}
.d2-3887617571 .fill-AA2{fill:#4A6FF3;}
.d2-3887617571 .fill-AA4{fill:#EDF0FD;}
.d2-3887617571 .fill-AA5{fill:#F7F8FE;}
.d2-3887617571 .fill-AB4{fill:#EDF0FD;}
.d2-3887617571 .fill-AB5{fill:#F7F8FE;}
.d2-3887617571 .stroke-N1{stroke:#0A0F25;}
.d2-3887617571 .stroke-N2{stroke:#676C7E;}
.d2-3887617571 .stroke-N3{stroke:#9499AB;}
.d2-3887617571 .stroke-N4{stroke:#CFD2DD;}
.d2-3887617571 .stroke-N5{stroke:#DEE1EB;}
.d2-3887617571 .stroke-N6{stroke:#EEF1F8;}
.d2-3887617571 .stroke-N7{stroke:#FFFFFF;}
.d2-3887617571 .stroke-B1{stroke:#0D32B2;}
.d2-3887617571 .stroke-B2{stroke:#0D32B2;}
.d2-3887617571 .stroke-B3{stroke:#E3E9FD;}
.d2-3887617571 .stroke-B4{stroke:#E3E9FD;}
.d2-3887617571 .stroke-B5{stroke:#EDF0FD;}
.d2-3887617571 .stroke-B6{stroke:#F7F8FE;}
.d2-3887617571 .stroke-AA2{stroke:#4A6FF3;}
.d2-3887617571 .stroke-AA4{stroke:#EDF0FD;}
.d2-3887617571 .stroke-AA5{stroke:#F7F8FE;}
.d2-3887617571 .stroke-AB4{stroke:#EDF0FD;}
.d2-3887617571 .stroke-AB5{stroke:#F7F8FE;}
.d2-3887617571 .background-color-N1{background-color:#0A0F25;}
.d2-3887617571 .background-color-N2{background-color:#676C7E;}
.d2-3887617571 .background-color-N3{background-color:#9499AB;}
.d2-3887617571 .background-color-N4{background-color:#CFD2DD;}
.d2-3887617571 .background-color-N5{background-color:#DEE1EB;}
.d2-3887617571 .background-color-N6{background-color:#EEF1F8;}
.d2-3887617571 .background-color-N7{background-color:#FFFFFF;}
.d2-3887617571 .background-color-B1{background-color:#0D32B2;}
.d2-3887617571 .background-color-B2{background-color:#0D32B2;}
.d2-3887617571 .background-color-B3{background-color:#E3E9FD;}
.d2-3887617571 .background-color-B4{background-color:#E3E9FD;}
.d2-3887617571 .background-color-B5{background-color:#EDF0FD;}
.d2-3887617571 .background-color-B6{background-color:#F7F8FE;}
.d2-3887617571 .background-color-AA2{background-color:#4A6FF3;}
.d2-3887617571 .background-color-AA4{background-color:#EDF0FD;}
.d2-3887617571 .background-color-AA5{background-color:#F7F8FE;}
.d2-3887617571 .background-color-AB4{background-color:#EDF0FD;}
.d2-3887617571 .background-color-AB5{background-color:#F7F8FE;}
.d2-3887617571 .color-N1{color:#0A0F25;}
.d2-3887617571 .color-N2{color:#676C7E;}
.d2-3887617571 .color-N3{color:#9499AB;}
.d2-3887617571 .color-N4{color:#CFD2DD;}
.d2-3887617571 .color-N5{color:#DEE1EB;}
.d2-3887617571 .color-N6{color:#EEF1F8;}
.d2-3887617571 .color-N7{color:#FFFFFF;}
.d2-3887617571 .color-B1{color:#0D32B2;}
.d2-3887617571 .color-B2{color:#0D32B2;}
.d2-3887617571 .color-B3{color:#E3E9FD;}
.d2-3887617571 .color-B4{color:#E3E9FD;}
.d2-3887617571 .color-B5{color:#EDF0FD;}
.d2-3887617571 .color-B6{color:#F7F8FE;}
.d2-3887617571 .color-AA2{color:#4A6FF3;}
.d2-3887617571 .color-AA4{color:#EDF0FD;}
.d2-3887617571 .color-AA5{color:#F7F8FE;}
.d2-3887617571 .color-AB4{color:#EDF0FD;}
.d2-3887617571 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3887617571);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3887617571);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3887617571);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3887617571);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3887617571);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3887617571);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3887617571);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3887617571);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="aGVsbG8="><g class="shape" ><rect x="0.000000" y="50.000000" width="80.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="40.000000" y="88.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">hello</text></g><g class="eWVz"><g class="shape" ><rect x="130.000000" y="20.000000" width="123.000000" height="126.000000" stroke="#0D32B2" fill="#E3E9FD" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="191.500000" y="7.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">yes</text></g><g class="YQ=="><g class="shape" ><rect x="303.000000" y="50.000000" width="53.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="329.500000" y="88.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">a</text></g><g class="Yg=="><g class="shape" ><rect x="303.000000" y="266.000000" width="53.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="329.500000" y="304.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">b</text></g><g class="eWVzLm9r"><g class="shape" ><rect x="160.000000" y="50.000000" width="63.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="191.500000" y="88.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">ok</text></g><g class="KGEgLSZndDsgYilbMF0="><marker id="mk-d2-3887617571-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 329.500000 118.000000 C 329.500000 156.000000 329.500000 226.000000 329.500000 262.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3887617571-3488378134)" mask="url(#d2-3887617571)" /></g><mask id="d2-3887617571" maskUnits="userSpaceOnUse" x="-1" y="-21" width="358" height="354">
<rect x="-1" y="-21" width="358" height="354" fill="white"></rect>
<rect x="22.500000" y="72.500000" width="35" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="172.500000" y="-21.000000" width="38" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="325.500000" y="72.500000" width="8" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="325.500000" y="288.500000" width="8" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="182.500000" y="72.500000" width="18" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,307 @@
{
"name": "",
"config": {
"sketch": false,
"themeID": 0,
"darkThemeID": null,
"pad": null,
"center": null,
"layoutEngine": null
},
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "hello",
"type": "rectangle",
"pos": {
"x": 12,
"y": 62
},
"width": 80,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "hello",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 35,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "yes",
"type": "rectangle",
"pos": {
"x": 112,
"y": 12
},
"width": 163,
"height": 166,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "yes",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 38,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "yes.ok",
"type": "rectangle",
"pos": {
"x": 162,
"y": 62
},
"width": 63,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "ok",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 18,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "a",
"type": "rectangle",
"pos": {
"x": 295,
"y": 112
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "b",
"type": "rectangle",
"pos": {
"x": 295,
"y": 248
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [
{
"id": "(a -> b)[0]",
"src": "a",
"srcArrow": "none",
"dst": "b",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 321.5,
"y": 178
},
{
"x": 321.5,
"y": 248
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.6.9-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 338 304"><svg class="d2-3130498190 d2-svg" width="338" height="304" viewBox="11 11 338 304"><rect x="11.000000" y="11.000000" width="338.000000" height="304.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3130498190 .text {
font-family: "d2-3130498190-font-regular";
}
@font-face {
font-family: d2-3130498190-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-3130498190 .text-bold {
font-family: "d2-3130498190-font-bold";
}
@font-face {
font-family: d2-3130498190-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-3130498190 .fill-N1{fill:#0A0F25;}
.d2-3130498190 .fill-N2{fill:#676C7E;}
.d2-3130498190 .fill-N3{fill:#9499AB;}
.d2-3130498190 .fill-N4{fill:#CFD2DD;}
.d2-3130498190 .fill-N5{fill:#DEE1EB;}
.d2-3130498190 .fill-N6{fill:#EEF1F8;}
.d2-3130498190 .fill-N7{fill:#FFFFFF;}
.d2-3130498190 .fill-B1{fill:#0D32B2;}
.d2-3130498190 .fill-B2{fill:#0D32B2;}
.d2-3130498190 .fill-B3{fill:#E3E9FD;}
.d2-3130498190 .fill-B4{fill:#E3E9FD;}
.d2-3130498190 .fill-B5{fill:#EDF0FD;}
.d2-3130498190 .fill-B6{fill:#F7F8FE;}
.d2-3130498190 .fill-AA2{fill:#4A6FF3;}
.d2-3130498190 .fill-AA4{fill:#EDF0FD;}
.d2-3130498190 .fill-AA5{fill:#F7F8FE;}
.d2-3130498190 .fill-AB4{fill:#EDF0FD;}
.d2-3130498190 .fill-AB5{fill:#F7F8FE;}
.d2-3130498190 .stroke-N1{stroke:#0A0F25;}
.d2-3130498190 .stroke-N2{stroke:#676C7E;}
.d2-3130498190 .stroke-N3{stroke:#9499AB;}
.d2-3130498190 .stroke-N4{stroke:#CFD2DD;}
.d2-3130498190 .stroke-N5{stroke:#DEE1EB;}
.d2-3130498190 .stroke-N6{stroke:#EEF1F8;}
.d2-3130498190 .stroke-N7{stroke:#FFFFFF;}
.d2-3130498190 .stroke-B1{stroke:#0D32B2;}
.d2-3130498190 .stroke-B2{stroke:#0D32B2;}
.d2-3130498190 .stroke-B3{stroke:#E3E9FD;}
.d2-3130498190 .stroke-B4{stroke:#E3E9FD;}
.d2-3130498190 .stroke-B5{stroke:#EDF0FD;}
.d2-3130498190 .stroke-B6{stroke:#F7F8FE;}
.d2-3130498190 .stroke-AA2{stroke:#4A6FF3;}
.d2-3130498190 .stroke-AA4{stroke:#EDF0FD;}
.d2-3130498190 .stroke-AA5{stroke:#F7F8FE;}
.d2-3130498190 .stroke-AB4{stroke:#EDF0FD;}
.d2-3130498190 .stroke-AB5{stroke:#F7F8FE;}
.d2-3130498190 .background-color-N1{background-color:#0A0F25;}
.d2-3130498190 .background-color-N2{background-color:#676C7E;}
.d2-3130498190 .background-color-N3{background-color:#9499AB;}
.d2-3130498190 .background-color-N4{background-color:#CFD2DD;}
.d2-3130498190 .background-color-N5{background-color:#DEE1EB;}
.d2-3130498190 .background-color-N6{background-color:#EEF1F8;}
.d2-3130498190 .background-color-N7{background-color:#FFFFFF;}
.d2-3130498190 .background-color-B1{background-color:#0D32B2;}
.d2-3130498190 .background-color-B2{background-color:#0D32B2;}
.d2-3130498190 .background-color-B3{background-color:#E3E9FD;}
.d2-3130498190 .background-color-B4{background-color:#E3E9FD;}
.d2-3130498190 .background-color-B5{background-color:#EDF0FD;}
.d2-3130498190 .background-color-B6{background-color:#F7F8FE;}
.d2-3130498190 .background-color-AA2{background-color:#4A6FF3;}
.d2-3130498190 .background-color-AA4{background-color:#EDF0FD;}
.d2-3130498190 .background-color-AA5{background-color:#F7F8FE;}
.d2-3130498190 .background-color-AB4{background-color:#EDF0FD;}
.d2-3130498190 .background-color-AB5{background-color:#F7F8FE;}
.d2-3130498190 .color-N1{color:#0A0F25;}
.d2-3130498190 .color-N2{color:#676C7E;}
.d2-3130498190 .color-N3{color:#9499AB;}
.d2-3130498190 .color-N4{color:#CFD2DD;}
.d2-3130498190 .color-N5{color:#DEE1EB;}
.d2-3130498190 .color-N6{color:#EEF1F8;}
.d2-3130498190 .color-N7{color:#FFFFFF;}
.d2-3130498190 .color-B1{color:#0D32B2;}
.d2-3130498190 .color-B2{color:#0D32B2;}
.d2-3130498190 .color-B3{color:#E3E9FD;}
.d2-3130498190 .color-B4{color:#E3E9FD;}
.d2-3130498190 .color-B5{color:#EDF0FD;}
.d2-3130498190 .color-B6{color:#F7F8FE;}
.d2-3130498190 .color-AA2{color:#4A6FF3;}
.d2-3130498190 .color-AA4{color:#EDF0FD;}
.d2-3130498190 .color-AA5{color:#F7F8FE;}
.d2-3130498190 .color-AB4{color:#EDF0FD;}
.d2-3130498190 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3130498190);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3130498190);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3130498190);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3130498190);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3130498190);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3130498190);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3130498190);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3130498190);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="aGVsbG8="><g class="shape" ><rect x="12.000000" y="62.000000" width="80.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="52.000000" y="100.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">hello</text></g><g class="eWVz"><g class="shape" ><rect x="112.000000" y="12.000000" width="163.000000" height="166.000000" stroke="#0D32B2" fill="#E3E9FD" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="193.500000" y="45.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">yes</text></g><g class="YQ=="><g class="shape" ><rect x="295.000000" y="112.000000" width="53.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="321.500000" y="150.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">a</text></g><g class="Yg=="><g class="shape" ><rect x="295.000000" y="248.000000" width="53.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="321.500000" y="286.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">b</text></g><g class="eWVzLm9r"><g class="shape" ><rect x="162.000000" y="62.000000" width="63.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="193.500000" y="100.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">ok</text></g><g class="KGEgLSZndDsgYilbMF0="><marker id="mk-d2-3130498190-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 321.500000 180.000000 L 321.500000 244.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3130498190-3488378134)" mask="url(#d2-3130498190)" /></g><mask id="d2-3130498190" maskUnits="userSpaceOnUse" x="11" y="11" width="338" height="304">
<rect x="11" y="11" width="338" height="304" fill="white"></rect>
<rect x="34.500000" y="84.500000" width="35" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="174.500000" y="17.000000" width="38" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="317.500000" y="134.500000" width="8" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="317.500000" y="270.500000" width="8" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="184.500000" y="84.500000" width="18" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -775,3 +775,30 @@ a -> b: hello {
b -> c: {
icon: https://icons.terrastruct.com/essentials%2F213-alarm.svg
}
-- model-nulling --
# Models
user
softwareSystem: {
serviceA
serviceB
serviceC
serviceD
serviceA -> serviceB
serviceA -> serviceD
serviceC -> serviceB
}
externalSystem
user -> softwareSystem
softwareSystem -> externalSystem
# Clear models
**: null
(** -> **)[*]: null
hello
yes: {
ok
}
a -> b