mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
850 B
33 lines
850 B
// Copyright 2024 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package markup |
|
|
|
import ( |
|
"strings" |
|
|
|
"golang.org/x/net/html" |
|
) |
|
|
|
// emailAddressProcessor replaces raw email addresses with a mailto: link. |
|
func emailAddressProcessor(ctx *RenderContext, node *html.Node) { |
|
next := node.NextSibling |
|
for node != nil && node != next { |
|
m := globalVars().emailRegex.FindStringSubmatchIndex(node.Data) |
|
if m == nil { |
|
return |
|
} |
|
|
|
var nextByte byte |
|
if len(node.Data) > m[3] { |
|
nextByte = node.Data[m[3]] |
|
} |
|
if strings.IndexByte(":/", nextByte) != -1 { |
|
// for cases: "git@gitea.com:owner/repo.git", "https://git@gitea.com/owner/repo.git" |
|
return |
|
} |
|
mail := node.Data[m[2]:m[3]] |
|
replaceContent(node, m[2], m[3], createLink(ctx, "mailto:"+mail, mail, "" /*mailto*/)) |
|
node = node.NextSibling.NextSibling |
|
} |
|
}
|
|
|