|
|
|
@ -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.
|
|
|
|
|