Documentation ¶
Index ¶
- Constants
- Variables
- func CamoEncode(link string) string
- func ComposeSimpleDocumentMetas() map[string]string
- func CustomLinkURLSchemes(schemes []string)
- func DetectMarkupTypeByFileName(filename string) string
- func DetectRendererType(filename string, input io.Reader) string
- func Init(renderHelpFuncs *RenderHelperFuncs)
- func IsFullURLBytes(link []byte) bool
- func IsFullURLString(link string) bool
- func IsNonEmptyRelativePath(link string) bool
- func PostProcessCommitMessage(ctx *RenderContext, content string) (string, error)
- func PostProcessCommitMessageSubject(ctx *RenderContext, defaultLink, content string) (string, error)
- func PostProcessDefault(ctx *RenderContext, input io.Reader, output io.Writer) error
- func PostProcessDescriptionHTML(ctx *RenderContext, content string) (string, error)
- func PostProcessEmoji(ctx *RenderContext, content string) (string, error)
- func PostProcessIssueTitle(ctx *RenderContext, title string) (string, error)
- func PreviewableExtensions() []string
- func RegisterRenderer(renderer Renderer)
- func Render(ctx *RenderContext, input io.Reader, output io.Writer) error
- func RenderString(ctx *RenderContext, content string) (string, error)
- func ResetDefaultSanitizerForTesting()
- func Sanitize(s string) string
- func SanitizeDescription(s string) string
- func SanitizeReader(r io.Reader, renderer string, w io.Writer) error
- type ExternalRenderer
- type LinkType
- type PostProcessRenderer
- type RenderCodePreviewOptions
- type RenderContext
- func (ctx *RenderContext) Deadline() (deadline time.Time, ok bool)
- func (ctx *RenderContext) Done() <-chan struct{}
- func (ctx *RenderContext) Err() error
- func (ctx *RenderContext) GetRenderOptions() *RenderOptions
- func (ctx *RenderContext) ResolveLinkApp(link string) string
- func (ctx *RenderContext) ResolveLinkRelative(base, cur, link string) (finalLink string)
- func (ctx *RenderContext) Value(key any) any
- func (ctx *RenderContext) WithHelper(helper RenderHelper) *RenderContext
- func (ctx *RenderContext) WithInStandalonePage(v bool) *RenderContext
- func (ctx *RenderContext) WithMarkupType(typ string) *RenderContext
- func (ctx *RenderContext) WithMetas(metas map[string]string) *RenderContext
- func (ctx *RenderContext) WithRelativePath(path string) *RenderContext
- func (ctx *RenderContext) WithUseAbsoluteLink(v bool) *RenderContext
- type RenderHelper
- type RenderHelperFuncs
- type RenderMetaMode
- type RenderOptions
- type Renderer
- type RendererContentDetector
- type Sanitizer
- type SimpleRenderHelper
- type TestRenderHelper
Constants ¶
const ( IssueNameStyleNumeric = "numeric" IssueNameStyleAlphanumeric = "alphanumeric" IssueNameStyleRegexp = "regexp" )
Issue name styles
Variables ¶
var RenderBehaviorForTesting struct { // Gitea will emit some additional attributes for various purposes, these attributes don't affect rendering. // But there are too many hard-coded test cases, to avoid changing all of them again and again, we can disable emitting these internal attributes. DisableAdditionalAttributes bool }
Functions ¶
func CamoEncode ¶
CamoEncode encodes a lnk to fit with the go-camo and camo proxy links. The purposes of camo-proxy are: 1. Allow accessing "http://" images on a HTTPS site by using the "https://" URLs provided by camo-proxy. 2. Hide the visitor's real IP (protect privacy) when accessing external images.
func CustomLinkURLSchemes ¶
func CustomLinkURLSchemes(schemes []string)
CustomLinkURLSchemes allows for additional schemes to be detected when parsing links within text
func DetectMarkupTypeByFileName ¶
DetectMarkupTypeByFileName returns the possible markup format type via the filename
func DetectRendererType ¶
DetectRendererType detects the markup type of the content
func Init ¶
func Init(renderHelpFuncs *RenderHelperFuncs)
Init initializes the render global variables
func IsFullURLBytes ¶
IsFullURLBytes reports whether link fits valid format.
func IsFullURLString ¶
func IsNonEmptyRelativePath ¶
func PostProcessCommitMessage ¶
func PostProcessCommitMessage(ctx *RenderContext, content string) (string, error)
PostProcessCommitMessage will use the same logic as PostProcess, but will disable the shortLinkProcessor.
func PostProcessCommitMessageSubject ¶
func PostProcessCommitMessageSubject(ctx *RenderContext, defaultLink, content string) (string, error)
PostProcessCommitMessageSubject will use the same logic as PostProcess and PostProcessCommitMessage, but will disable the shortLinkProcessor and emailAddressProcessor, will add a defaultLinkProcessor if defaultLink is set, which changes every text node into a link to the passed default link.
func PostProcessDefault ¶
PostProcessDefault does the final required transformations to the passed raw HTML data, and ensures its validity. Transformations include: replacing links and emails with HTML links, parsing shortlinks in the format of [[Link]], like MediaWiki, linking issues in the format #ID, and mentions in the format @user, and others.
func PostProcessDescriptionHTML ¶
func PostProcessDescriptionHTML(ctx *RenderContext, content string) (string, error)
PostProcessDescriptionHTML will use similar logic as PostProcess, but will use a single special linkProcessor.
func PostProcessEmoji ¶
func PostProcessEmoji(ctx *RenderContext, content string) (string, error)
PostProcessEmoji for when we want to just process emoji and shortcodes in various places it isn't already run through the normal markdown processor
func PostProcessIssueTitle ¶
func PostProcessIssueTitle(ctx *RenderContext, title string) (string, error)
PostProcessIssueTitle to process title on individual issue/pull page
func PreviewableExtensions ¶
func PreviewableExtensions() []string
func RegisterRenderer ¶
func RegisterRenderer(renderer Renderer)
RegisterRenderer registers a new markup file renderer
func RenderString ¶
func RenderString(ctx *RenderContext, content string) (string, error)
RenderString renders Markup string to HTML with all specific handling stuff and return string
func ResetDefaultSanitizerForTesting ¶
func ResetDefaultSanitizerForTesting()
func Sanitize ¶
Sanitize takes a string that contains a HTML fragment or document and applies policy whitelist.
func SanitizeDescription ¶
SanitizeDescription sanitizes the HTML generated for a repository description.
Types ¶
type ExternalRenderer ¶
type ExternalRenderer interface { // SanitizerDisabled disabled sanitize if return true SanitizerDisabled() bool // DisplayInIFrame represents whether render the content with an iframe DisplayInIFrame() bool }
ExternalRenderer defines an interface for external renderers
type LinkType ¶
type LinkType string
const ( LinkTypeApp LinkType = "app" // the link is relative to the AppSubURL LinkTypeDefault LinkType = "default" // the link is relative to the default base (eg: repo link, or current ref tree path) LinkTypeMedia LinkType = "media" // the link should be used to access media files (images, videos) LinkTypeRaw LinkType = "raw" // not really useful, mainly for environment GITEA_PREFIX_RAW for external renders )
type PostProcessRenderer ¶
type PostProcessRenderer interface {
NeedPostProcess() bool
}
PostProcessRenderer defines an interface for renderers who need post process
type RenderContext ¶
type RenderContext struct { SidebarTocNode ast.Node RenderHelper RenderHelper RenderOptions RenderOptions RenderInternal nocturnal.RenderInternal // contains filtered or unexported fields }
RenderContext represents a render context
func NewRenderContext ¶
func NewRenderContext(ctx context.Context) *RenderContext
func NewTestRenderContext ¶
func NewTestRenderContext(baseLinkOrMetas ...any) *RenderContext
NewTestRenderContext is a helper function to create a RenderContext for testing purpose It accepts string (BaseLink), map[string]string (Metas)
func (*RenderContext) Done ¶
func (ctx *RenderContext) Done() <-chan struct{}
func (*RenderContext) Err ¶
func (ctx *RenderContext) Err() error
func (*RenderContext) GetRenderOptions ¶
func (ctx *RenderContext) GetRenderOptions() *RenderOptions
func (*RenderContext) ResolveLinkApp ¶
func (ctx *RenderContext) ResolveLinkApp(link string) string
func (*RenderContext) ResolveLinkRelative ¶
func (ctx *RenderContext) ResolveLinkRelative(base, cur, link string) (finalLink string)
func (*RenderContext) Value ¶
func (ctx *RenderContext) Value(key any) any
func (*RenderContext) WithHelper ¶
func (ctx *RenderContext) WithHelper(helper RenderHelper) *RenderContext
func (*RenderContext) WithInStandalonePage ¶
func (ctx *RenderContext) WithInStandalonePage(v bool) *RenderContext
func (*RenderContext) WithMarkupType ¶
func (ctx *RenderContext) WithMarkupType(typ string) *RenderContext
func (*RenderContext) WithMetas ¶
func (ctx *RenderContext) WithMetas(metas map[string]string) *RenderContext
func (*RenderContext) WithRelativePath ¶
func (ctx *RenderContext) WithRelativePath(path string) *RenderContext
func (*RenderContext) WithUseAbsoluteLink ¶
func (ctx *RenderContext) WithUseAbsoluteLink(v bool) *RenderContext
type RenderHelper ¶
type RenderHelperFuncs ¶
type RenderHelperFuncs struct { IsUsernameMentionable func(ctx context.Context, username string) bool RenderRepoFileCodePreview func(ctx context.Context, options RenderCodePreviewOptions) (template.HTML, error) }
RenderHelperFuncs is used to decouple cycle-import At the moment there are different packages: modules/markup: basic markup rendering models/renderhelper: need to access models and git repo, and models/issues needs it services/markup: some real helper functions could only be provided here because it needs to access various services & templates
var DefaultRenderHelperFuncs *RenderHelperFuncs
type RenderMetaMode ¶
type RenderMetaMode string
const ( RenderMetaAsDetails RenderMetaMode = "details" // default RenderMetaAsNone RenderMetaMode = "none" RenderMetaAsTable RenderMetaMode = "table" )
type RenderOptions ¶
type RenderOptions struct { UseAbsoluteLink bool // relative path from tree root of the branch RelativePath string // eg: "orgmode", "asciicast", "console" // for file mode, it could be left as empty, and will be detected by file extension in RelativePath MarkupType string // user&repo, format&style®exp (for external issue pattern), teams&org (for mention) // BranchNameSubURL (for iframe&asciicast) // markupAllowShortIssuePattern // markdownLineBreakStyle (comment, document) Metas map[string]string // used by external render. the router "/org/repo/render/..." will output the rendered content in a standalone page InStandalonePage bool }
func NewRenderOptions ¶
type Renderer ¶
type Renderer interface { Name() string // markup format name Extensions() []string SanitizerRules() []setting.MarkupSanitizerRule Render(ctx *RenderContext, input io.Reader, output io.Writer) error }
Renderer defines an interface for rendering markup file to HTML
func GetRendererByFileName ¶
GetRendererByFileName get renderer by filename
type RendererContentDetector ¶
RendererContentDetector detects if the content can be rendered by specified renderer
type Sanitizer ¶
type Sanitizer struct {
// contains filtered or unexported fields
}
Sanitizer is a protection wrapper of *bluemonday.Policy which does not allow any modification to the underlying policies once it's been created.
func GetDefaultSanitizer ¶
func GetDefaultSanitizer() *Sanitizer
type SimpleRenderHelper ¶
type SimpleRenderHelper struct{}
func (*SimpleRenderHelper) CleanUp ¶
func (r *SimpleRenderHelper) CleanUp()
func (*SimpleRenderHelper) IsCommitIDExisting ¶
func (r *SimpleRenderHelper) IsCommitIDExisting(commitID string) bool
func (*SimpleRenderHelper) ResolveLink ¶
func (r *SimpleRenderHelper) ResolveLink(link string, likeType LinkType) string
type TestRenderHelper ¶
type TestRenderHelper struct { BaseLink string // contains filtered or unexported fields }
func (*TestRenderHelper) CleanUp ¶
func (r *TestRenderHelper) CleanUp()
func (*TestRenderHelper) IsCommitIDExisting ¶
func (r *TestRenderHelper) IsCommitIDExisting(commitID string) bool
func (*TestRenderHelper) ResolveLink ¶
func (r *TestRenderHelper) ResolveLink(link string, likeType LinkType) string