[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)
This commit is contained in:
Gusted 2023-11-26 20:43:51 +01:00 committed by Earl Warren
parent 75ce1e2ac1
commit e1a82a15d3
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
2 changed files with 13 additions and 4 deletions

View file

@ -524,6 +524,18 @@ func TestMathBlock(t *testing.T) {
"$$a$$", "$$a$$",
`<pre class="code-block is-loading"><code class="chroma language-math display">a</code></pre>` + nl, `<pre class="code-block is-loading"><code class="chroma language-math display">a</code></pre>` + nl,
}, },
{
`\[a b\]`,
`<pre class="code-block is-loading"><code class="chroma language-math display">a b</code></pre>` + nl,
},
{
`\[a b]`,
`<p>[a b]</p>` + nl,
},
{
`$$a`,
`<p>$$a</p>` + nl,
},
} }
for _, test := range testcases { for _, test := range testcases {

View file

@ -55,10 +55,7 @@ func (b *blockParser) Open(parent ast.Node, reader text.Reader, pc parser.Contex
return node, parser.Close | parser.NoChildren return node, parser.Close | parser.NoChildren
} }
reader.Advance(segment.Len() - 1) return nil, parser.NoChildren
segment.Start += 2
node.Lines().Append(segment)
return node, parser.NoChildren
} }
// Continue parses the current line and returns a result of parsing. // Continue parses the current line and returns a result of parsing.