github_flavored_markdown: github.com/shurcooL/github_flavored_markdown Index | Examples | Files | Directories

package github_flavored_markdown

import "github.com/shurcooL/github_flavored_markdown"

Package github_flavored_markdown provides a GitHub Flavored Markdown renderer with fenced code block highlighting, clickable heading anchor links.

The functionality should be equivalent to the GitHub Markdown API endpoint specified at https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode, except the rendering is performed locally.

See examples for how to generate a complete HTML page, including CSS styles.

Index

Examples

Package Files

main.go

func Header(heading atom.Atom, title string) *html.Node

Header returns a heading HTML node with title text. The heading comes with an anchor based on the title.

heading can be one of atom.H1, atom.H2, atom.H3, atom.H4, atom.H5, atom.H6.

Deprecated: Use Heading instead. This function was renamed to that, and will be deleted soon.

func Heading Uses

func Heading(heading atom.Atom, title string) *html.Node

Heading returns a heading HTML node with title text. The heading comes with an anchor based on the title.

heading can be one of atom.H1, atom.H2, atom.H3, atom.H4, atom.H5, atom.H6.

Code:

heading := github_flavored_markdown.Heading(atom.H2, "Hello > Goodbye")
html.Render(os.Stdout, heading)

Output:

<h2><a name="hello-goodbye" class="anchor" href="#hello-goodbye" rel="nofollow" aria-hidden="true"><span class="octicon-link"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" style="fill: currentColor; vertical-align: top;"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></span></a>Hello &gt; Goodbye</h2>

func Markdown Uses

func Markdown(text []byte) []byte

Markdown renders GitHub Flavored Markdown text.

Code:

text := []byte("Hello world github/linguist#1 **cool**, and #1!")

os.Stdout.Write(github_flavored_markdown.Markdown(text))

Output:

<p>Hello world github/linguist#1 <strong>cool</strong>, and #1!</p>

An example of how to generate a complete HTML page, including CSS styles.

Code:

// Serve the "/assets/gfm.css" file.
http.Handle("/assets/", http.StripPrefix("/assets", http.FileServer(gfmstyle.Assets)))

var w io.Writer = os.Stdout // It can be an http.ResponseWriter.
markdown := []byte("# GitHub Flavored Markdown\n\nHello.")

io.WriteString(w, `<html><head><meta charset="utf-8"><link href="/assets/gfm.css" media="all" rel="stylesheet" type="text/css" /><link href="//cdnjs.cloudflare.com/ajax/libs/octicons/2.1.2/octicons.css" media="all" rel="stylesheet" type="text/css" /></head><body><article class="markdown-body entry-content" style="padding: 30px;">`)
w.Write(github_flavored_markdown.Markdown(markdown))
io.WriteString(w, `</article></body></html>`)

Output:

<html><head><meta charset="utf-8"><link href="/assets/gfm.css" media="all" rel="stylesheet" type="text/css" /><link href="//cdnjs.cloudflare.com/ajax/libs/octicons/2.1.2/octicons.css" media="all" rel="stylesheet" type="text/css" /></head><body><article class="markdown-body entry-content" style="padding: 30px;"><h1><a name="github-flavored-markdown" class="anchor" href="#github-flavored-markdown" rel="nofollow" aria-hidden="true"><span class="octicon octicon-link"></span></a>GitHub Flavored Markdown</h1>

<p>Hello.</p>
</article></body></html>

Directories

PathSynopsis
gfmstylePackage gfmstyle contains CSS styles for rendering GitHub Flavored Markdown.

Package github_flavored_markdown imports 16 packages (graph) and is imported by 33 packages. Updated 2017-02-12. Refresh now. Tools for package owners.