diff options
author | Wim <wim@42.be> | 2021-12-12 00:05:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-12 00:05:15 +0100 |
commit | 3893a035be347a7687a41d2054dd1b274d3a0504 (patch) | |
tree | dfe4a3bf72a0a6356e51bd8fc2e88e9a26e52331 /vendor/github.com/gomarkdown/markdown/parser/inline.go | |
parent | 658bdd9faa835660ae407331732e9d93d8f6443b (diff) | |
download | matterbridge-msglm-3893a035be347a7687a41d2054dd1b274d3a0504.tar.gz matterbridge-msglm-3893a035be347a7687a41d2054dd1b274d3a0504.tar.bz2 matterbridge-msglm-3893a035be347a7687a41d2054dd1b274d3a0504.zip |
Update dependencies/vendor (#1659)
Diffstat (limited to 'vendor/github.com/gomarkdown/markdown/parser/inline.go')
-rw-r--r-- | vendor/github.com/gomarkdown/markdown/parser/inline.go | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/vendor/github.com/gomarkdown/markdown/parser/inline.go b/vendor/github.com/gomarkdown/markdown/parser/inline.go index bc30326d..d68983f7 100644 --- a/vendor/github.com/gomarkdown/markdown/parser/inline.go +++ b/vendor/github.com/gomarkdown/markdown/parser/inline.go @@ -766,7 +766,22 @@ func entity(p *Parser, data []byte, offset int) (int, ast.Node) { // undo & escaping or it will be converted to &amp; by another // escaper in the renderer if bytes.Equal(ent, []byte("&")) { - ent = []byte{'&'} + return end, newTextNode([]byte{'&'}) + } + if len(ent) < 4 { + return end, newTextNode(ent) + } + + // if ent consists solely out of numbers (hex or decimal) convert that unicode codepoint to actual rune + codepoint := uint64(0) + var err error + if ent[2] == 'x' || ent[2] == 'X' { // hexadecimal + codepoint, err = strconv.ParseUint(string(ent[3:len(ent)-1]), 16, 64) + } else { + codepoint, err = strconv.ParseUint(string(ent[2:len(ent)-1]), 10, 64) + } + if err == nil { // only if conversion was valid return here. + return end, newTextNode([]byte(string(codepoint))) } return end, newTextNode(ent) |