Documentation
¶
Index ¶
- Variables
- type ANSIRenderer
- type BaseElement
- type BlockElement
- type BlockStack
- func (s BlockStack) Current() BlockElement
- func (s BlockStack) Indent() uint
- func (s *BlockStack) Len() int
- func (s BlockStack) Margin() uint
- func (s BlockStack) Parent() BlockElement
- func (s *BlockStack) Pop()
- func (s *BlockStack) Push(e BlockElement)
- func (s BlockStack) Width(ctx RenderContext) uint
- func (s BlockStack) With(child StylePrimitive) StylePrimitive
- type Chroma
- type CodeBlockElement
- type Element
- type ElementFinisher
- type ElementRenderer
- type HeadingElement
- type ImageElement
- type ItemElement
- type LinkElement
- type MarginWriter
- type Options
- type ParagraphElement
- type RenderContext
- type StyleBlock
- type StyleCodeBlock
- type StyleConfig
- type StyleList
- type StylePrimitive
- type StyleTable
- type StyleTask
- type StyleWriter
- type TableCellElement
- type TableElement
- type TableHeadElement
- type TableRowElement
- type TaskElement
Constants ¶
This section is empty.
Variables ¶
var ( TemplateFuncMap = template.FuncMap{ "Left": func(values ...interface{}) string { s := values[0].(string) n := values[1].(int) if n > len(s) { n = len(s) } return s[:n] }, "Matches": func(values ...interface{}) bool { ok, _ := regexp.MatchString(values[1].(string), values[0].(string)) return ok }, "Mid": func(values ...interface{}) string { s := values[0].(string) l := values[1].(int) if l > len(s) { l = len(s) } if len(values) > 2 { r := values[2].(int) if r > len(s) { r = len(s) } return s[l:r] } return s[l:] }, "Right": func(values ...interface{}) string { s := values[0].(string) n := len(s) - values[1].(int) if n < 0 { n = 0 } return s[n:] }, "Last": func(values ...interface{}) string { return values[0].([]string)[len(values[0].([]string))-1] }, "Compare": strings.Compare, "Contains": strings.Contains, "ContainsAny": strings.ContainsAny, "Count": strings.Count, "EqualFold": strings.EqualFold, "HasPrefix": strings.HasPrefix, "HasSuffix": strings.HasSuffix, "Index": strings.Index, "IndexAny": strings.IndexAny, "Join": strings.Join, "LastIndex": strings.LastIndex, "LastIndexAny": strings.LastIndexAny, "Repeat": strings.Repeat, "Replace": strings.Replace, "Split": strings.Split, "SplitAfter": strings.SplitAfter, "SplitAfterN": strings.SplitAfterN, "SplitN": strings.SplitN, "Title": strings.Title, "ToLower": strings.ToLower, "ToTitle": strings.ToTitle, "ToUpper": strings.ToUpper, "Trim": strings.Trim, "TrimLeft": strings.TrimLeft, "TrimPrefix": strings.TrimPrefix, "TrimRight": strings.TrimRight, "TrimSpace": strings.TrimSpace, "TrimSuffix": strings.TrimSuffix, } )
TemplateFuncMap contains a few useful template helpers.
Functions ¶
This section is empty.
Types ¶
type ANSIRenderer ¶
type ANSIRenderer struct {
// contains filtered or unexported fields
}
ANSIRenderer renders markdown content as ANSI escaped sequences.
func NewRenderer ¶
func NewRenderer(options Options) *ANSIRenderer
NewRenderer returns a new ANSIRenderer with style and options set.
func (*ANSIRenderer) NewElement ¶
func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element
NewElement returns the appropriate render Element for a given node.
func (*ANSIRenderer) RegisterFuncs ¶
func (r *ANSIRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer)
RegisterFuncs implements NodeRenderer.RegisterFuncs.
type BaseElement ¶
type BaseElement struct {
Token string
Prefix string
Suffix string
Style StylePrimitive
}
BaseElement renders a styled primitive element.
func (*BaseElement) Render ¶
func (e *BaseElement) Render(w io.Writer, ctx RenderContext) error
type BlockElement ¶
type BlockElement struct {
Block *bytes.Buffer
Style StyleBlock
Margin bool
Newline bool
}
BlockElement provides a render buffer for children of a block element. After all children have been rendered into it, it applies indentation and margins around them and writes everything to the parent rendering buffer.
func (*BlockElement) Finish ¶
func (e *BlockElement) Finish(w io.Writer, ctx RenderContext) error
func (*BlockElement) Render ¶
func (e *BlockElement) Render(w io.Writer, ctx RenderContext) error
type BlockStack ¶
type BlockStack []BlockElement
BlockStack is a stack of block elements, used to calculate the current indentation & margin level during the rendering process.
func (BlockStack) Current ¶
func (s BlockStack) Current() BlockElement
Current returns the current BlockElement.
func (BlockStack) Indent ¶
func (s BlockStack) Indent() uint
Indent returns the current indentation level of all elements in the stack.
func (BlockStack) Margin ¶
func (s BlockStack) Margin() uint
Margin returns the current margin level of all elements in the stack.
func (BlockStack) Parent ¶
func (s BlockStack) Parent() BlockElement
Parent returns the current BlockElement's parent.
func (*BlockStack) Push ¶
func (s *BlockStack) Push(e BlockElement)
Push appends an item to the stack.
func (BlockStack) Width ¶
func (s BlockStack) Width(ctx RenderContext) uint
Width returns the available rendering width.
func (BlockStack) With ¶
func (s BlockStack) With(child StylePrimitive) StylePrimitive
With returns a StylePrimitive that inherits the current BlockElement's style.
type Chroma ¶
type Chroma struct {
Text StylePrimitive `json:"text,omitempty"`
Error StylePrimitive `json:"error,omitempty"`
Comment StylePrimitive `json:"comment,omitempty"`
CommentPreproc StylePrimitive `json:"comment_preproc,omitempty"`
Keyword StylePrimitive `json:"keyword,omitempty"`
KeywordReserved StylePrimitive `json:"keyword_reserved,omitempty"`
KeywordNamespace StylePrimitive `json:"keyword_namespace,omitempty"`
KeywordType StylePrimitive `json:"keyword_type,omitempty"`
Operator StylePrimitive `json:"operator,omitempty"`
Punctuation StylePrimitive `json:"punctuation,omitempty"`
Name StylePrimitive `json:"name,omitempty"`
NameBuiltin StylePrimitive `json:"name_builtin,omitempty"`
NameTag StylePrimitive `json:"name_tag,omitempty"`
NameAttribute StylePrimitive `json:"name_attribute,omitempty"`
NameClass StylePrimitive `json:"name_class,omitempty"`
NameConstant StylePrimitive `json:"name_constant,omitempty"`
NameDecorator StylePrimitive `json:"name_decorator,omitempty"`
NameException StylePrimitive `json:"name_exception,omitempty"`
NameFunction StylePrimitive `json:"name_function,omitempty"`
NameOther StylePrimitive `json:"name_other,omitempty"`
Literal StylePrimitive `json:"literal,omitempty"`
LiteralNumber StylePrimitive `json:"literal_number,omitempty"`
LiteralDate StylePrimitive `json:"literal_date,omitempty"`
LiteralString StylePrimitive `json:"literal_string,omitempty"`
LiteralStringEscape StylePrimitive `json:"literal_string_escape,omitempty"`
GenericDeleted StylePrimitive `json:"generic_deleted,omitempty"`
GenericEmph StylePrimitive `json:"generic_emph,omitempty"`
GenericInserted StylePrimitive `json:"generic_inserted,omitempty"`
GenericStrong StylePrimitive `json:"generic_strong,omitempty"`
GenericSubheading StylePrimitive `json:"generic_subheading,omitempty"`
Background StylePrimitive `json:"background,omitempty"`
}
Chroma holds all the chroma settings.
type CodeBlockElement ¶
A CodeBlockElement is used to render code blocks.
func (*CodeBlockElement) Render ¶
func (e *CodeBlockElement) Render(w io.Writer, ctx RenderContext) error
type Element ¶
type Element struct {
Entering string
Exiting string
Renderer ElementRenderer
Finisher ElementFinisher
}
An Element is used to instruct the renderer how to handle individual markdown nodes.
type ElementFinisher ¶
type ElementFinisher interface {
Finish(w io.Writer, ctx RenderContext) error
}
ElementFinisher is called when leaving a markdown node.
type ElementRenderer ¶
type ElementRenderer interface {
Render(w io.Writer, ctx RenderContext) error
}
ElementRenderer is called when entering a markdown node.
type HeadingElement ¶
A HeadingElement is used to render headings.
func (*HeadingElement) Finish ¶
func (e *HeadingElement) Finish(w io.Writer, ctx RenderContext) error
func (*HeadingElement) Render ¶
func (e *HeadingElement) Render(w io.Writer, ctx RenderContext) error
type ImageElement ¶
type ImageElement struct {
Text string
BaseURL string
URL string
Child ElementRenderer
}
An ImageElement is used to render images elements.
func (*ImageElement) Render ¶
func (e *ImageElement) Render(w io.Writer, ctx RenderContext) error
type ItemElement ¶
An ItemElement is used to render items inside a list.
func (*ItemElement) Render ¶
func (e *ItemElement) Render(w io.Writer, ctx RenderContext) error
type LinkElement ¶
type LinkElement struct {
Text string
BaseURL string
URL string
Child ElementRenderer
}
A LinkElement is used to render hyperlinks.
func (*LinkElement) Render ¶
func (e *LinkElement) Render(w io.Writer, ctx RenderContext) error
type MarginWriter ¶
type MarginWriter struct {
// contains filtered or unexported fields
}
MarginWriter is a Writer that applies indentation and padding around whatever you write to it.
func NewMarginWriter ¶
func NewMarginWriter(ctx RenderContext, w io.Writer, rules StyleBlock) *MarginWriter
NewMarginWriter returns a new MarginWriter.
type Options ¶
type Options struct {
BaseURL string
WordWrap int
PreserveNewLines bool
ColorProfile termenv.Profile
Styles StyleConfig
}
Options is used to configure an ANSIRenderer.
type ParagraphElement ¶
type ParagraphElement struct {
First bool
}
A ParagraphElement is used to render individual paragraphs.
func (*ParagraphElement) Finish ¶
func (e *ParagraphElement) Finish(w io.Writer, ctx RenderContext) error
func (*ParagraphElement) Render ¶
func (e *ParagraphElement) Render(w io.Writer, ctx RenderContext) error
type RenderContext ¶
type RenderContext struct {
// contains filtered or unexported fields
}
RenderContext holds the current rendering options and state.
func NewRenderContext ¶
func NewRenderContext(options Options) RenderContext
NewRenderContext returns a new RenderContext.
func (RenderContext) SanitizeHTML ¶
func (ctx RenderContext) SanitizeHTML(s string, trimSpaces bool) string
SanitizeHTML sanitizes HTML content.
type StyleBlock ¶
type StyleBlock struct {
StylePrimitive
Indent *uint `json:"indent,omitempty"`
IndentToken *string `json:"indent_token,omitempty"`
Margin *uint `json:"margin,omitempty"`
}
StyleBlock holds the basic style settings for block elements.
type StyleCodeBlock ¶
type StyleCodeBlock struct {
StyleBlock
Theme string `json:"theme,omitempty"`
Chroma *Chroma `json:"chroma,omitempty"`
}
StyleCodeBlock holds the style settings for a code block.
type StyleConfig ¶
type StyleConfig struct {
Document StyleBlock `json:"document,omitempty"`
BlockQuote StyleBlock `json:"block_quote,omitempty"`
Paragraph StyleBlock `json:"paragraph,omitempty"`
List StyleList `json:"list,omitempty"`
Heading StyleBlock `json:"heading,omitempty"`
H1 StyleBlock `json:"h1,omitempty"`
H2 StyleBlock `json:"h2,omitempty"`
H3 StyleBlock `json:"h3,omitempty"`
H4 StyleBlock `json:"h4,omitempty"`
H5 StyleBlock `json:"h5,omitempty"`
H6 StyleBlock `json:"h6,omitempty"`
Text StylePrimitive `json:"text,omitempty"`
Strikethrough StylePrimitive `json:"strikethrough,omitempty"`
Emph StylePrimitive `json:"emph,omitempty"`
Strong StylePrimitive `json:"strong,omitempty"`
HorizontalRule StylePrimitive `json:"hr,omitempty"`
Item StylePrimitive `json:"item,omitempty"`
Enumeration StylePrimitive `json:"enumeration,omitempty"`
Task StyleTask `json:"task,omitempty"`
Link StylePrimitive `json:"link,omitempty"`
LinkText StylePrimitive `json:"link_text,omitempty"`
Image StylePrimitive `json:"image,omitempty"`
ImageText StylePrimitive `json:"image_text,omitempty"`
Code StyleBlock `json:"code,omitempty"`
CodeBlock StyleCodeBlock `json:"code_block,omitempty"`
Table StyleTable `json:"table,omitempty"`
DefinitionList StyleBlock `json:"definition_list,omitempty"`
DefinitionTerm StylePrimitive `json:"definition_term,omitempty"`
DefinitionDescription StylePrimitive `json:"definition_description,omitempty"`
HTMLBlock StyleBlock `json:"html_block,omitempty"`
HTMLSpan StyleBlock `json:"html_span,omitempty"`
}
StyleConfig is used to configure the styling behavior of an ANSIRenderer.
type StyleList ¶
type StyleList struct {
StyleBlock
LevelIndent uint `json:"level_indent,omitempty"`
}
StyleList holds the style settings for a list.
type StylePrimitive ¶
type StylePrimitive struct {
BlockPrefix string `json:"block_prefix,omitempty"`
BlockSuffix string `json:"block_suffix,omitempty"`
Prefix string `json:"prefix,omitempty"`
Suffix string `json:"suffix,omitempty"`
Color *string `json:"color,omitempty"`
BackgroundColor *string `json:"background_color,omitempty"`
Underline *bool `json:"underline,omitempty"`
Bold *bool `json:"bold,omitempty"`
Upper *bool `json:"upper,omitempty"`
Lower *bool `json:"lower,omitempty"`
Title *bool `json:"title,omitempty"`
Italic *bool `json:"italic,omitempty"`
CrossedOut *bool `json:"crossed_out,omitempty"`
Faint *bool `json:"faint,omitempty"`
Conceal *bool `json:"conceal,omitempty"`
Overlined *bool `json:"overlined,omitempty"`
Inverse *bool `json:"inverse,omitempty"`
Blink *bool `json:"blink,omitempty"`
Format string `json:"format,omitempty"`
}
StylePrimitive holds all the basic style settings.
type StyleTable ¶
type StyleTable struct {
StyleBlock
CenterSeparator *string `json:"center_separator,omitempty"`
ColumnSeparator *string `json:"column_separator,omitempty"`
RowSeparator *string `json:"row_separator,omitempty"`
}
StyleTable holds the style settings for a table.
type StyleTask ¶
type StyleTask struct {
StylePrimitive
Ticked string `json:"ticked,omitempty"`
Unticked string `json:"unticked,omitempty"`
}
StyleTask holds the style settings for a task item.
type StyleWriter ¶
type StyleWriter struct {
// contains filtered or unexported fields
}
StyleWriter is a Writer that applies styling on whatever you write to it.
func NewStyleWriter ¶
func NewStyleWriter(ctx RenderContext, w io.Writer, rules StylePrimitive) *StyleWriter
NewStyleWriter returns a new StyleWriter.
func (*StyleWriter) Close ¶
func (w *StyleWriter) Close() error
Close must be called when you're finished writing to a StyleWriter.
type TableCellElement ¶
A TableCellElement is used to render a single cell in a row.
func (*TableCellElement) Render ¶
func (e *TableCellElement) Render(w io.Writer, ctx RenderContext) error
type TableElement ¶
type TableElement struct {
// contains filtered or unexported fields
}
A TableElement is used to render tables.
func (*TableElement) Finish ¶
func (e *TableElement) Finish(w io.Writer, ctx RenderContext) error
func (*TableElement) Render ¶
func (e *TableElement) Render(w io.Writer, ctx RenderContext) error
type TableHeadElement ¶
type TableHeadElement struct {
}
A TableHeadElement is used to render a table's head element.
func (*TableHeadElement) Finish ¶
func (e *TableHeadElement) Finish(w io.Writer, ctx RenderContext) error
type TableRowElement ¶
type TableRowElement struct {
}
A TableRowElement is used to render a single row in a table.
func (*TableRowElement) Finish ¶
func (e *TableRowElement) Finish(w io.Writer, ctx RenderContext) error
type TaskElement ¶
type TaskElement struct {
Checked bool
}
A TaskElement is used to render tasks inside a todo-list.
func (*TaskElement) Render ¶
func (e *TaskElement) Render(w io.Writer, ctx RenderContext) error