summaryrefslogtreecommitdiffstats
path: root/modules/markup/html.go
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2019-04-09 05:18:48 +0200
committerLauris BH <lauris@nix.lv>2019-04-09 06:18:48 +0300
commit8e949db3b540486a8b5f085ebf2a7ff2d8cea646 (patch)
tree3e0bb5be3089d97963a865d8f4aab5d9cb661967 /modules/markup/html.go
parent61b85990a62419aed0d425643cf723866e6de760 (diff)
downloadgitea-8e949db3b540486a8b5f085ebf2a7ff2d8cea646.tar.gz
gitea-8e949db3b540486a8b5f085ebf2a7ff2d8cea646.zip
Render SHA1 links as code blocks (#6546)
Diffstat (limited to 'modules/markup/html.go')
-rw-r--r--modules/markup/html.go45
1 files changed, 31 insertions, 14 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go
index a3bf15fe25..136f76d301 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -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.