markup

package
v0.0.0-...-85b91c5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2023 License: MIT Imports: 28 Imported by: 13

Documentation

Index

Constants

View Source
const (
	IssueNameStyleNumeric      = "numeric"
	IssueNameStyleAlphanumeric = "alphanumeric"
	IssueNameStyleRegexp       = "regexp"
)

Issue name styles

Variables

View Source
var (

	// EmojiShortCodeRegex find emoji by alias like :smile:
	EmojiShortCodeRegex = regexp.MustCompile(`:[-+\w]+:`)
)

Functions

func CamoEncode

func CamoEncode(link string) string

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 DetectRendererType

func DetectRendererType(filename string, input io.Reader) string

DetectRendererType detects the markup type of the content

func Init

func Init()

Init initialize regexps for markdown parsing

func InitializeSanitizer

func InitializeSanitizer()

InitializeSanitizer (re)initializes the current sanitizer to account for changes in settings

func IsLink(link []byte) bool

IsLink reports whether link fits valid format.

func IsMarkupFile

func IsMarkupFile(name, markup string) bool

IsMarkupFile reports whether file is a markup type file

func IsReadmeFile

func IsReadmeFile(name string, ext ...string) bool

IsReadmeFile reports whether name looks like a README file based on its name. If an extension is provided, it will strictly match that extension. Note that the '.' should be provided in ext, e.g ".md"

func IsSameDomain

func IsSameDomain(s string) bool

IsSameDomain checks if given url string has the same hostname as current GitBundle instance

func NewSanitizer

func NewSanitizer()

NewSanitizer initializes sanitizer with allowed attributes based on settings. Multiple calls to this function will only create one instance of Sanitizer during entire application lifecycle.

func PostProcess

func PostProcess(
	ctx *RenderContext,
	input io.Reader,
	output io.Writer,
) error

PostProcess 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 RegisterRenderer

func RegisterRenderer(renderer Renderer)

RegisterRenderer registers a new markup file renderer

func Render

func Render(ctx *RenderContext, input io.Reader, output io.Writer) error

Render renders markup file to HTML with all specific handling stuff.

func RenderCommitMessage

func RenderCommitMessage(
	ctx *RenderContext,
	content string,
) (string, error)

RenderCommitMessage will use the same logic as PostProcess, but will disable the shortLinkProcessor and will add a defaultLinkProcessor if defaultLink is set, which changes every text node into a link to the passed default link.

func RenderCommitMessageSubject

func RenderCommitMessageSubject(
	ctx *RenderContext,
	content string,
) (string, error)

RenderCommitMessageSubject will use the same logic as PostProcess and RenderCommitMessage, 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 RenderDescriptionHTML

func RenderDescriptionHTML(
	ctx *RenderContext,
	content string,
) (string, error)

RenderDescriptionHTML will use similar logic as PostProcess, but will use a single special linkProcessor.

func RenderEmoji

func RenderEmoji(
	content string,
) (string, error)

RenderEmoji for when we want to just process emoji and shortcodes in various places it isn't already run through the normal markdown processor

func RenderIssueTitle

func RenderIssueTitle(
	ctx *RenderContext,
	title string,
) (string, error)

RenderIssueTitle to process title on individual issue/pull page

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 Sanitize

func Sanitize(s string) string

Sanitize takes a string that contains a HTML fragment or document and applies policy whitelist.

func SanitizeReader

func SanitizeReader(r io.Reader, renderer string, w io.Writer) error

SanitizeReader sanitizes a Reader

func Type

func Type(filename string) string

Type returns if markup format via the filename

Types

type ErrUnsupportedRenderExtension

type ErrUnsupportedRenderExtension struct {
	Extension string
}

ErrUnsupportedRenderExtension represents the error when extension doesn't supported to render

func (ErrUnsupportedRenderExtension) Error

type ErrUnsupportedRenderType

type ErrUnsupportedRenderType struct {
	Type string
}

ErrUnsupportedRenderType represents

func (ErrUnsupportedRenderType) Error

func (err ErrUnsupportedRenderType) Error() string

type ExternalRenderer

type ExternalRenderer interface {
	// SanitizerDisabled disabled sanitize if return true
	SanitizerDisabled() bool

	// DisplayInIFrame represents whether render the content with an iframe
	DisplayInIFrame() bool
}

PostProcessRenderer defines an interface for external renderers

type Header struct {
	Level int
	Text  string
	ID    string
}

Header holds the data about a header.

type PostProcessRenderer

type PostProcessRenderer interface {
	NeedPostProcess() bool
}

PostProcessRenderer defines an interface for renderers who need post process

type RenderContext

type RenderContext struct {
	Ctx           context.Context
	RelativePath  string // relative path from tree root of the branch
	Type          string
	IsWiki        bool
	URLPrefix     string
	Metas         map[string]string
	DefaultLink   string
	GitRepo       *git.Repository
	ShaExistCache map[string]bool

	TableOfContents  []Header
	InStandalonePage bool // used by external render. the router "/org/repo/render/..." will output the rendered content in a standalone page
	// contains filtered or unexported fields
}

RenderContext represents a render context

func (*RenderContext) AddCancel

func (ctx *RenderContext) AddCancel(fn func())

AddCancel adds the provided fn as a Cleanup for this Ctx

func (*RenderContext) Cancel

func (ctx *RenderContext) Cancel()

Cancel runs any cleanup functions that have been registered for this Ctx

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

func GetRendererByFileName(filename string) Renderer

GetRendererByFileName get renderer by filename

func GetRendererByType

func GetRendererByType(tp string) Renderer

GetRendererByType returns a renderer according type

type RendererContentDetector

type RendererContentDetector interface {
	CanRender(filename string, input io.Reader) bool
}

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL