From acd1456db9e5a16ad0f697b52b789cca4f96fc7c Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 26 Nov 2023 20:43:51 +0100 Subject: [PATCH] [GITEA] Require Latex code to have a end sequence - Currently the parser will look for `\[` and `$$` to detect when Latex code starts, it will look for `\]` and `$$` respectively in order to determine the end of the code. However if no end is found the parser assumes the rest of the input is part of the Latex code. - Adjust the parser's behavior to not allow the case to assume the rest of the input is part of the Latex code and requires in order to determine if some input is Latex code that the end sequence is also specified. - Example: `\[hello]` would no longer be detected as Latex code with this patch. - Added unit tests. - Resolves https://codeberg.org/forgejo/forgejo/issues/1817 (cherry picked from commit 452aef1bb1a5ccf986f187b6467d9827b01789f3) (cherry picked from commit 8a857c24b0421145ece67a69d54e78af20689e0d) --- modules/markup/markdown/markdown_test.go | 12 ++++++++++++ modules/markup/markdown/math/block_parser.go | 5 +---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/markup/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go index 8f855f1b13..caffe0ea43 100644 --- a/modules/markup/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -510,6 +510,18 @@ func TestMathBlock(t *testing.T) { "$$a$$", `
a
` + nl, }, + { + `\[a b\]`, + `
a b
` + nl, + }, + { + `\[a b]`, + `

[a b]

` + nl, + }, + { + `$$a`, + `

$$a

` + nl, + }, } for _, test := range testcases { diff --git a/modules/markup/markdown/math/block_parser.go b/modules/markup/markdown/math/block_parser.go index 7f714d7239..f3262c82c0 100644 --- a/modules/markup/markdown/math/block_parser.go +++ b/modules/markup/markdown/math/block_parser.go @@ -55,10 +55,7 @@ func (b *blockParser) Open(parent ast.Node, reader text.Reader, pc parser.Contex return node, parser.Close | parser.NoChildren } - reader.Advance(segment.Len() - 1) - segment.Start += 2 - node.Lines().Append(segment) - return node, parser.NoChildren + return nil, parser.NoChildren } // Continue parses the current line and returns a result of parsing.