// 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
	}
}