Fix markdown math brackets render problem (#31420)

Close #31371, support `($ ... $)` like GitHub

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 90a3c20e7996e2db577a51d37f2190e2e990a22a)

Conflicts:
	modules/markup/markdown/markdown_test.go
	trivial context conflict
This commit is contained in:
charles 2024-06-20 10:12:54 +08:00 committed by Earl Warren
parent 4ebe8c1270
commit b53be9d45c
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
2 changed files with 9 additions and 1 deletions

View file

@ -548,6 +548,10 @@ func TestMathBlock(t *testing.T) {
`$$a`, `$$a`,
`<p>$$a</p>` + nl, `<p>$$a</p>` + nl,
}, },
{
"$a$ ($b$) [$c$] {$d$}",
`<p><code class="language-math is-loading">a</code> (<code class="language-math is-loading">b</code>) [$c$] {$d$}</p>` + nl,
},
} }
for _, test := range testcases { for _, test := range testcases {

View file

@ -45,6 +45,10 @@ func isPunctuation(b byte) bool {
return b == '.' || b == '!' || b == '?' || b == ',' || b == ';' || b == ':' return b == '.' || b == '!' || b == '?' || b == ',' || b == ';' || b == ':'
} }
func isBracket(b byte) bool {
return b == ')'
}
func isAlphanumeric(b byte) bool { func isAlphanumeric(b byte) bool {
return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9') return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9')
} }
@ -84,7 +88,7 @@ func (parser *inlineParser) Parse(parent ast.Node, block text.Reader, pc parser.
break break
} }
suceedingCharacter := line[pos] suceedingCharacter := line[pos]
if !isPunctuation(suceedingCharacter) && !(suceedingCharacter == ' ') { if !isPunctuation(suceedingCharacter) && !(suceedingCharacter == ' ') && !isBracket(suceedingCharacter) {
return nil return nil
} }
if line[ender-1] != '\\' { if line[ender-1] != '\\' {