From e1a82a15d3837a51409b128d4cf66d86e63788e0 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) (cherry picked from commit acd1456db9e5a16ad0f697b52b789cca4f96fc7c) (cherry picked from commit 6523b45073838c168df75108b444f7fb2ef9dd2c) (cherry picked from commit e2e1a8afe7f8a2627d518e7dc18cc7f97ca86e48) (cherry picked from commit a46ef652ebac4422f6e4d48a676f8386dbfb7d0d) (cherry picked from commit 54d5a8c073f49332358d181a8dd78464c6d58641) (cherry picked from commit 4a88dc6416c7c6c552018ca0382373aa63329c9e) (cherry picked from commit f88b58be3f6964d71094a7d7fe5067d9004a303c) (cherry picked from commit 316ff9767ffc37a44949b6c504d465fc65ed4a60) --- 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 bdf4011fa2..4c282901e5 100644 --- a/modules/markup/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -524,6 +524,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.