code.gitea.io/gitea@v1.22.3/modules/markup/sanitizer_description.go (about)

     1  // Copyright 2024 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package markup
     5  
     6  import (
     7  	"regexp"
     8  
     9  	"github.com/microcosm-cc/bluemonday"
    10  )
    11  
    12  // createRepoDescriptionPolicy returns a minimal more strict policy that is used for
    13  // repository descriptions.
    14  func (st *Sanitizer) createRepoDescriptionPolicy() *bluemonday.Policy {
    15  	policy := bluemonday.NewPolicy()
    16  	policy.AllowStandardURLs()
    17  
    18  	// Allow italics and bold.
    19  	policy.AllowElements("i", "b", "em", "strong")
    20  
    21  	// Allow code.
    22  	policy.AllowElements("code")
    23  
    24  	// Allow links
    25  	policy.AllowAttrs("href", "target", "rel").OnElements("a")
    26  
    27  	// Allow classes for emojis
    28  	policy.AllowAttrs("class").Matching(regexp.MustCompile(`^emoji$`)).OnElements("img", "span")
    29  	policy.AllowAttrs("aria-label").OnElements("span")
    30  
    31  	return policy
    32  }
    33  
    34  // SanitizeDescription sanitizes the HTML generated for a repository description.
    35  func SanitizeDescription(s string) string {
    36  	return GetDefaultSanitizer().descriptionPolicy.Sanitize(s)
    37  }