Skip to content

markup

A Go library for rendering markup files to HTML. Given a filename and its contents, it picks the right renderer and produces HTML. Markdown and Org-mode are rendered natively in Go; other formats shell out to external tools.

import "github.com/git-pkgs/markup"

r := markup.NewDefaultRegistry()

result, err := r.Render("README.md", content)
fmt.Println(result.HTML)
fmt.Println(result.Format) // "Markdown"

The default registry comes with all supported formats configured. Native formats always work; external formats return markup.ErrToolNotFound if the required tool isn’t on $PATH, and unrecognised extensions return markup.ErrUnsupportedFormat.

Supported formats

FormatExtensionsRenderer
Markdown.md, .markdown, .mdown, .mkdn, .mdn, .mdtext, .livemdgoldmark (native)
Org-mode.orggo-org (native)
AsciiDoc.adoc, .asciidoc, .ascasciidoctor (external)
reStructuredText.rst, .rest, .rst.txtrst2html (external)
Pod.podpod2html (external)
Textile.textileconsumer-provided
MediaWiki.mediawiki, .wikiconsumer-provided
Creole.creoleconsumer-provided
RDoc.rdocconsumer-provided

Custom renderers

r := markup.NewRegistry()

r.Register(markup.FormatMarkdown, markup.NewMarkdownRenderer(), ".md", ".markdown")

r.Register(markup.FormatTextile, markup.NewExternalRenderer(markup.ExternalConfig{
    Command: "pandoc",
    Args:    []string{"-f", "textile", "-t", "html"},
}), ".textile")

r.RegisterFilename(markup.FormatMarkdown, markup.NewMarkdownRenderer(), "README")

Installation

go get github.com/git-pkgs/markup

View on GitHub