diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 13f3a6928..489a520f2 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -3,5 +3,6 @@ #### Improvements 🧹 - ELK layouts tuned to have better defaults. [#627](https://github.com/terrastruct/d2/pull/627) +- Code snippets of unrecognized languages will render (just without syntax highlighting). [#650](https://github.com/terrastruct/d2/pull/650) #### Bugfixes ⛑️ diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 678f0c2ae..2ff96d2eb 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -807,7 +807,7 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske if targetShape.Type == d2target.ShapeCode { lexer := lexers.Get(targetShape.Language) if lexer == nil { - return labelMask, fmt.Errorf("code snippet lexer for %s not found", targetShape.Language) + lexer = lexers.Fallback } style := styles.Get("github") if style == nil { diff --git a/e2etests/regression_test.go b/e2etests/regression_test.go index e0d04390f..90d250fa4 100644 --- a/e2etests/regression_test.go +++ b/e2etests/regression_test.go @@ -302,6 +302,13 @@ k8s -> osvc: keycloak k8s -> osvc: heptapod k8s -> osvc: harbor k8s -> osvc: vault +`, + }, + { + name: "no-lexer", + script: `x: |d2 + x -> y +| `, }, } diff --git a/e2etests/testdata/regression/no-lexer/dagre/board.exp.json b/e2etests/testdata/regression/no-lexer/dagre/board.exp.json new file mode 100644 index 000000000..8b025b727 --- /dev/null +++ b/e2etests/testdata/regression/no-lexer/dagre/board.exp.json @@ -0,0 +1,46 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "x", + "type": "code", + "pos": { + "x": 0, + "y": 0 + }, + "width": 73, + "height": 38, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#FFFFFF", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "x -> y", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "d2", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 73, + "labelHeight": 38, + "zIndex": 0, + "level": 1 + } + ], + "connections": [] +} diff --git a/e2etests/testdata/regression/no-lexer/dagre/sketch.exp.svg b/e2etests/testdata/regression/no-lexer/dagre/sketch.exp.svg new file mode 100644 index 000000000..506bdae15 --- /dev/null +++ b/e2etests/testdata/regression/no-lexer/dagre/sketch.exp.svg @@ -0,0 +1,52 @@ + +x -> y + + + \ No newline at end of file diff --git a/e2etests/testdata/regression/no-lexer/elk/board.exp.json b/e2etests/testdata/regression/no-lexer/elk/board.exp.json new file mode 100644 index 000000000..25c474e9c --- /dev/null +++ b/e2etests/testdata/regression/no-lexer/elk/board.exp.json @@ -0,0 +1,46 @@ +{ + "name": "", + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "x", + "type": "code", + "pos": { + "x": 12, + "y": 12 + }, + "width": 73, + "height": 38, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#FFFFFF", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "x -> y", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "d2", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 73, + "labelHeight": 38, + "zIndex": 0, + "level": 1 + } + ], + "connections": [] +} diff --git a/e2etests/testdata/regression/no-lexer/elk/sketch.exp.svg b/e2etests/testdata/regression/no-lexer/elk/sketch.exp.svg new file mode 100644 index 000000000..216375a7b --- /dev/null +++ b/e2etests/testdata/regression/no-lexer/elk/sketch.exp.svg @@ -0,0 +1,52 @@ + +x -> y + + + \ No newline at end of file