github_flavored_markdown

package module
v0.0.0-...-c3a9aa4 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2021 License: MIT Imports: 16 Imported by: 194

README

github_flavored_markdown

Go Reference Build Status

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.

Installation

go get github.com/shurcooL/github_flavored_markdown

Directories

Path Synopsis
gfmstyle Package gfmstyle contains CSS styles for rendering GitHub Flavored Markdown.

License

Documentation

Overview

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func Heading

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.

Example
package main

import (
	"os"

	"github.com/shurcooL/github_flavored_markdown"
	"golang.org/x/net/html"
	"golang.org/x/net/html/atom"
)

func main() {
	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

func Markdown(text []byte) []byte

Markdown renders GitHub Flavored Markdown text.

Example
package main

import (
	"os"

	"github.com/shurcooL/github_flavored_markdown"
)

func main() {
	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>
Example (CompleteHTMLPage)

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

package main

import (
	"io"
	"net/http"
	"os"

	"github.com/shurcooL/github_flavored_markdown"
	"github.com/shurcooL/github_flavored_markdown/gfmstyle"
)

func main() {
	// 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>

Types

This section is empty.

Directories

Path Synopsis
Package gfmstyle contains CSS styles for rendering GitHub Flavored Markdown.
Package gfmstyle contains CSS styles for rendering GitHub Flavored Markdown.

Jump to

Keyboard shortcuts

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