Documentation
¶
Index ¶
- Variables
- func BalanceOpenMarkers(s string) string
- func NewSpoilerExtension() goldmark.Extender
- func NewSpoilerHTMLRenderer(opts ...html.Option) renderer.NodeRenderer
- func NewTelegramHTMLRenderer(opts ...ghtml.Option) renderer.NodeRenderer
- func ToHTML(markdown string) (string, error)
- func UTF16Length(s string) int
- type SpoilerExtension
- type SpoilerHTMLRenderer
- type SpoilerNode
- type TelegramHTMLRenderer
Constants ¶
This section is empty.
Variables ¶
var KindSpoiler = ast.NewNodeKind("Spoiler")
KindSpoiler is the kind of SpoilerNode
Functions ¶
func BalanceOpenMarkers ¶ added in v0.9.0
BalanceOpenMarkers appends the minimum suffix needed to close any open Markdown markers in `s`, so that mid-stream content can be safely fed to ToHTML without producing dangling/unrendered markup.
Handled markers (these cover ~99% of LLM chat output):
- Triple-backtick fenced code blocks (```)
- Inline code (`)
- Bold (**)
Intentionally NOT handled — they're rare in chat and the heuristics would do more harm than good (snake_case identifiers, mathematical asterisks, etc.):
- Single-asterisk italic (*)
- Underscore italic (_) and underscore bold (__)
- Strikethrough (~~)
The function is purely additive: it never modifies or removes characters from the input. If a marker can't be cleanly closed (e.g. an opening fence with no language line yet) the function still appends a closer so goldmark sees a well-formed buffer.
func NewSpoilerExtension ¶
NewSpoilerExtension creates a new SpoilerExtension
func NewSpoilerHTMLRenderer ¶
func NewSpoilerHTMLRenderer(opts ...html.Option) renderer.NodeRenderer
NewSpoilerHTMLRenderer creates a new SpoilerHTMLRenderer
func NewTelegramHTMLRenderer ¶
func NewTelegramHTMLRenderer(opts ...ghtml.Option) renderer.NodeRenderer
NewTelegramHTMLRenderer creates a new TelegramHTMLRenderer
func UTF16Length ¶
UTF16Length calculates the length of a string in UTF-16 code units This is how Telegram counts message length
Types ¶
type SpoilerExtension ¶
type SpoilerExtension struct{}
SpoilerExtension is a goldmark extension for spoilers
func (*SpoilerExtension) Extend ¶
func (e *SpoilerExtension) Extend(m goldmark.Markdown)
Extend implements goldmark.Extender
type SpoilerHTMLRenderer ¶
SpoilerHTMLRenderer renders spoiler nodes to HTML
func (*SpoilerHTMLRenderer) RegisterFuncs ¶
func (r *SpoilerHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer)
RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs
type SpoilerNode ¶
type SpoilerNode struct {
ast.BaseInline
}
SpoilerNode represents a spoiler node in the AST
func (*SpoilerNode) Dump ¶
func (n *SpoilerNode) Dump(source []byte, level int)
Dump implements ast.Node.Dump
type TelegramHTMLRenderer ¶
TelegramHTMLRenderer is a custom renderer for Telegram HTML format
func (*TelegramHTMLRenderer) RegisterFuncs ¶
func (r *TelegramHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer)
RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs