From d230155d4841fc237568a86ec0cdd3a55dc8e6e5 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Fri, 9 Dec 2022 16:08:41 +0300 Subject: [PATCH] add text block Closes #3 --- grammar.js | 20 ++++++++- src/grammar.json | 95 +++++++++++++++++++++++++++++++++++++++++- src/node-types.json | 44 +++++++++++++++++++ src/parser.c | Bin 140167 -> 154697 bytes test/corpus/shape.txt | 71 +++++++++++++++++++++++++++++++ tree-sitter-d2.wasm | Bin 30396 -> 37205 bytes 6 files changed, 226 insertions(+), 4 deletions(-) diff --git a/grammar.js b/grammar.js index 0f48377..8bff710 100644 --- a/grammar.js +++ b/grammar.js @@ -1,6 +1,7 @@ const PREC = { COMMENT: -2, EOL: -1, + TEXT_BLOCK_CONTENT: -1, UNQUOTED_STRING: 0, CONTAINER: 2, CONNECTION: 2, @@ -107,7 +108,7 @@ module.exports = grammar({ optional( choice( seq($.dot, alias($._style_attribute, $.attribute)), - seq(optional(seq($._colon, optional($.label)))) + seq(optional(seq($._colon, choice($.label, $.text_block)))) ) ) ) @@ -123,6 +124,21 @@ module.exports = grammar({ ) ), + text_block: ($) => + choice( + seq("|", $._text_block_definition, "|"), + // References: https://github.com/terrastruct/d2-vim + seq("|`", $._text_block_definition, "`|") + ), + + _text_block_definition: ($) => + seq(optional($.language), $._eol, optional($.text_block_content)), + + text_block_content: ($) => + repeat1(token(prec(PREC.TEXT_BLOCK_CONTENT, /.*?[^`|]/))), + + language: ($) => /\w+/, + // attributes _root_attribute: ($) => @@ -260,7 +276,7 @@ module.exports = grammar({ dot: ($) => token("."), _unquoted_string: ($) => - token(prec(PREC.UNQUOTED_STRING, /[^'"`\n\s;{}]([^\n;{}]*[^\n\s;{}])?/)), + token(prec(PREC.UNQUOTED_STRING, /[^'"`|\n\s;{}]([^\n;{}]*[^\n\s;{}])?/)), string: ($) => choice( diff --git a/src/grammar.json b/src/grammar.json index ad3b555..767bdf0 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -442,7 +442,8 @@ "name": "label" }, { - "type": "BLANK" + "type": "SYMBOL", + "name": "text_block" } ] } @@ -506,6 +507,96 @@ } } }, + "text_block": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "|" + }, + { + "type": "SYMBOL", + "name": "_text_block_definition" + }, + { + "type": "STRING", + "value": "|" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "|`" + }, + { + "type": "SYMBOL", + "name": "_text_block_definition" + }, + { + "type": "STRING", + "value": "`|" + } + ] + } + ] + }, + "_text_block_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "language" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_eol" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "text_block_content" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "text_block_content": { + "type": "REPEAT1", + "content": { + "type": "TOKEN", + "content": { + "type": "PREC", + "value": -1, + "content": { + "type": "PATTERN", + "value": ".*?[^`|]" + } + } + } + }, + "language": { + "type": "PATTERN", + "value": "\\w+" + }, "_root_attribute": { "type": "SEQ", "members": [ @@ -1103,7 +1194,7 @@ "value": 0, "content": { "type": "PATTERN", - "value": "[^'\"`\\n\\s;{}]([^\\n;{}]*[^\\n\\s;{}])?" + "value": "[^'\"`|\\n\\s;{}]([^\\n;{}]*[^\\n\\s;{}])?" } } }, diff --git a/src/node-types.json b/src/node-types.json index 419c1eb..f39fe3c 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -219,6 +219,10 @@ { "type": "shape_key", "named": true + }, + { + "type": "text_block", + "named": true } ] } @@ -270,6 +274,30 @@ "named": true, "fields": {} }, + { + "type": "text_block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "language", + "named": true + }, + { + "type": "text_block_content", + "named": true + } + ] + } + }, + { + "type": "text_block_content", + "named": true, + "fields": {} + }, { "type": "\u0000", "named": false @@ -298,6 +326,10 @@ "type": "`", "named": false }, + { + "type": "`|", + "named": false + }, { "type": "animated", "named": false @@ -342,6 +374,10 @@ "type": "label", "named": false }, + { + "type": "language", + "named": true + }, { "type": "line_comment", "named": true @@ -394,6 +430,14 @@ "type": "{", "named": false }, + { + "type": "|", + "named": false + }, + { + "type": "|`", + "named": false + }, { "type": "}", "named": false diff --git a/src/parser.c b/src/parser.c index e34cffaefae6fe4f20a74b75d9ab8587c67a4aac..bc09a54e5f3e1f05b7f8ffd555dcece17349a7ef 100644 GIT binary patch literal 154697 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

3uz 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 literal 140167 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 diff --git a/test/corpus/shape.txt b/test/corpus/shape.txt index d0846f2..2ff0098 100644 --- a/test/corpus/shape.txt +++ b/test/corpus/shape.txt @@ -109,3 +109,74 @@ Use quoted string as shape key and label (shape (shape_key (string)) (label (string))) ) +================================================================================ +Basic text block +================================================================================ +foo: | + - hello +| + +-------------------------------------------------------------------------------- + +(source_file + (shape + (shape_key) + (text_block + (text_block_content) + ) + ) +) + +================================================================================ +Text block with specific language +================================================================================ +foo: |go + + awsSession := From(c.Request.Context()) + + client := s3.New(awsSession) + + + ctx, cancelFn := context.WithTimeout(c.Request.Context(), AWS_TIMEOUT) + + defer cancelFn() +| + +-------------------------------------------------------------------------------- + +(source_file + (shape + (shape_key) + (text_block + (language) + (text_block_content) + ) + ) +) + +================================================================================ +Text block with quotes (d2-vim style) +================================================================================ +foo: |`go + + awsSession := From(c.Request.Context()) + + client := s3.New(awsSession) + + + ctx, cancelFn := context.WithTimeout(c.Request.Context(), AWS_TIMEOUT) + + defer cancelFn() +`| + +-------------------------------------------------------------------------------- + +(source_file + (shape + (shape_key) + (text_block + (language) + (text_block_content) + ) + ) +) diff --git a/tree-sitter-d2.wasm b/tree-sitter-d2.wasm index b1090db5e0fd307ade3e71efb4770a6f17832b1b..024038d73b77c76f34c337fd6fd05ad03541ed2a 100755 GIT binary patch literal 37205 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 literal 30396 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