Skip to content

Commit

Permalink
Refactor markup code (#31399)
Browse files Browse the repository at this point in the history
1. use clearer names
2. remove deadcode
3. avoid name shadowing
4. eliminate some lint warnings
  • Loading branch information
wxiaoguang authored Jun 17, 2024
1 parent 363c123 commit 5a7376c
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 37 deletions.
36 changes: 10 additions & 26 deletions modules/markup/html.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,20 +144,6 @@ func CustomLinkURLSchemes(schemes []string) {
common.LinkRegex, _ = xurls.StrictMatchingScheme(strings.Join(withAuth, "|"))
}

// IsSameDomain checks if given url string has the same hostname as current Gitea instance
func IsSameDomain(s string) bool {
if strings.HasPrefix(s, "/") {
return true
}
if uapp, err := url.Parse(setting.AppURL); err == nil {
if u, err := url.Parse(s); err == nil {
return u.Host == uapp.Host
}
return false
}
return false
}

type postProcessError struct {
context string
err error
Expand Down Expand Up @@ -429,7 +415,7 @@ func visitNode(ctx *RenderContext, procs []processor, node *html.Node) *html.Nod
// We ignore code and pre.
switch node.Type {
case html.TextNode:
textNode(ctx, procs, node)
processTextNodes(ctx, procs, node)
case html.ElementNode:
if node.Data == "img" {
next := node.NextSibling
Expand Down Expand Up @@ -465,15 +451,16 @@ func visitNode(ctx *RenderContext, procs []processor, node *html.Node) *html.Nod
for n := node.FirstChild; n != nil; {
n = visitNode(ctx, procs, n)
}
default:
}
return node.NextSibling
}

// textNode runs the passed node through various processors, in order to handle
// processTextNodes runs the passed node through various processors, in order to handle
// all kinds of special links handled by the post-processing.
func textNode(ctx *RenderContext, procs []processor, node *html.Node) {
for _, processor := range procs {
processor(ctx, node)
func processTextNodes(ctx *RenderContext, procs []processor, node *html.Node) {
for _, p := range procs {
p(ctx, node)
}
}

Expand Down Expand Up @@ -939,14 +926,11 @@ func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
// Path determines the type of link that will be rendered. It's unknown at this point whether
// the linked item is actually a PR or an issue. Luckily it's of no real consequence because
// Gitea will redirect on click as appropriate.
path := "issues"
if ref.IsPull {
path = "pulls"
}
issuePath := util.Iif(ref.IsPull, "pulls", "issues")
if ref.Owner == "" {
link = createLink(util.URLJoin(ctx.Links.Prefix(), ctx.Metas["user"], ctx.Metas["repo"], path, ref.Issue), reftext, "ref-issue")
link = createLink(util.URLJoin(ctx.Links.Prefix(), ctx.Metas["user"], ctx.Metas["repo"], issuePath, ref.Issue), reftext, "ref-issue")
} else {
link = createLink(util.URLJoin(ctx.Links.Prefix(), ref.Owner, ref.Name, path, ref.Issue), reftext, "ref-issue")
link = createLink(util.URLJoin(ctx.Links.Prefix(), ref.Owner, ref.Name, issuePath, ref.Issue), reftext, "ref-issue")
}
}

Expand Down Expand Up @@ -1207,7 +1191,7 @@ func hashCurrentPatternProcessor(ctx *RenderContext, node *html.Node) {
return
}
ctx.AddCancel(func() {
closer.Close()
_ = closer.Close()
ctx.GitRepo = nil
})
}
Expand Down
11 changes: 0 additions & 11 deletions modules/markup/html_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,17 +144,6 @@ func TestRender_CrossReferences(t *testing.T) {
`<p><a href="`+inputURL+`" rel="nofollow"><code>0123456789/foo.txt (L2-L3)</code></a></p>`)
}

func TestMisc_IsSameDomain(t *testing.T) {
setting.AppURL = markup.TestAppURL

sha := "b6dd6210eaebc915fd5be5579c58cce4da2e2579"
commit := util.URLJoin(markup.TestRepoURL, "commit", sha)

assert.True(t, markup.IsSameDomain(commit))
assert.False(t, markup.IsSameDomain("http://google.com/ncr"))
assert.False(t, markup.IsSameDomain("favicon.ico"))
}

func TestRender_links(t *testing.T) {
setting.AppURL = markup.TestAppURL

Expand Down

0 comments on commit 5a7376c

Please sign in to comment.