Render SHA1 links as code blocks (#6546)
This commit is contained in:
parent
61b85990a6
commit
8e949db3b5
3 changed files with 40 additions and 23 deletions
|
@ -327,22 +327,39 @@ func (ctx *postProcessCtx) textNode(node *html.Node) {
|
|||
}
|
||||
|
||||
func createLink(href, content string) *html.Node {
|
||||
textNode := &html.Node{
|
||||
a := &html.Node{
|
||||
Type: html.ElementNode,
|
||||
Data: atom.A.String(),
|
||||
Attr: []html.Attribute{{Key: "href", Val: href}},
|
||||
}
|
||||
text := &html.Node{
|
||||
Type: html.TextNode,
|
||||
Data: content,
|
||||
}
|
||||
linkNode := &html.Node{
|
||||
FirstChild: textNode,
|
||||
LastChild: textNode,
|
||||
Type: html.ElementNode,
|
||||
Data: "a",
|
||||
DataAtom: atom.A,
|
||||
Attr: []html.Attribute{
|
||||
{Key: "href", Val: href},
|
||||
},
|
||||
|
||||
a.AppendChild(text)
|
||||
return a
|
||||
}
|
||||
|
||||
func createCodeLink(href, content string) *html.Node {
|
||||
a := &html.Node{
|
||||
Type: html.ElementNode,
|
||||
Data: atom.A.String(),
|
||||
Attr: []html.Attribute{{Key: "href", Val: href}},
|
||||
}
|
||||
textNode.Parent = linkNode
|
||||
return linkNode
|
||||
text := &html.Node{
|
||||
Type: html.TextNode,
|
||||
Data: content,
|
||||
}
|
||||
|
||||
code := &html.Node{
|
||||
Type: html.ElementNode,
|
||||
Data: atom.Code.String(),
|
||||
}
|
||||
|
||||
code.AppendChild(text)
|
||||
a.AppendChild(code)
|
||||
return a
|
||||
}
|
||||
|
||||
// replaceContent takes a text node, and in its content it replaces a section of
|
||||
|
@ -633,7 +650,7 @@ func fullSha1PatternProcessor(ctx *postProcessCtx, node *html.Node) {
|
|||
text += " (" + hash + ")"
|
||||
}
|
||||
|
||||
replaceContent(node, start, end, createLink(urlFull, text))
|
||||
replaceContent(node, start, end, createCodeLink(urlFull, text))
|
||||
}
|
||||
|
||||
// sha1CurrentPatternProcessor renders SHA1 strings to corresponding links that
|
||||
|
@ -651,7 +668,7 @@ func sha1CurrentPatternProcessor(ctx *postProcessCtx, node *html.Node) {
|
|||
// Although unlikely, deadbeef and 1234567 are valid short forms of SHA1 hash
|
||||
// as used by git and github for linking and thus we have to do similar.
|
||||
replaceContent(node, m[2], m[3],
|
||||
createLink(util.URLJoin(ctx.urlPrefix, "commit", hash), base.ShortSha(hash)))
|
||||
createCodeLink(util.URLJoin(ctx.urlPrefix, "commit", hash), base.ShortSha(hash)))
|
||||
}
|
||||
|
||||
// emailAddressProcessor replaces raw email addresses with a mailto: link.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue