From 5031117363393c0faaaa73c364cfd9109efcd928 Mon Sep 17 00:00:00 2001 From: clragon Date: Tue, 4 Jun 2024 00:47:50 +0200 Subject: [PATCH] fixed block tags ending in links --- lib/markup/data/grammar.dart | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/markup/data/grammar.dart b/lib/markup/data/grammar.dart index 1c96ef34..9d34b4e7 100644 --- a/lib/markup/data/grammar.dart +++ b/lib/markup/data/grammar.dart @@ -135,6 +135,12 @@ class DTextGrammar extends GrammarDefinition { ref0(section), ].toChoiceParser(); + Parser blockMarkers() => [ + ref1(blockMarker, 'quote'), + ref1(blockMarker, 'code'), + ref1(blockMarker, 'section'), + ].toChoiceParser(); + Parser structures() => [ ref0(header), ref0(list), @@ -178,6 +184,16 @@ class DTextGrammar extends GrammarDefinition { Parser character() => any().map((value) => DTextContent(value)); + Parser blockMarker(String tag) => ( + char('['), + char('/').optional(), + stringIgnoreCase(tag), + (char('='), any().starLazy(char(']')).flatten()) + .toSequenceParser() + .optional(), + char(']'), + ).toSequenceParser(); + Parser simpleBlockTag(String tag) => ref3(blockTag, tag, tag, null).map((e) => e.$2); @@ -273,7 +289,7 @@ class DTextGrammar extends GrammarDefinition { condense( ref0(textElement) .starLazy([ - blocks(), + blockMarkers(), newline(), endOfInput(), ].toChoiceParser()) @@ -289,7 +305,7 @@ class DTextGrammar extends GrammarDefinition { condense( ref0(textElement) .starLazy([ - blocks(), + blockMarkers(), newline(), endOfInput(), ].toChoiceParser())