mirror of https://github.com/golang/go.git
32 lines
981 B
Go
32 lines
981 B
Go
// Copyright 2020 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package godoc
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/yuin/goldmark"
|
|
"github.com/yuin/goldmark/parser"
|
|
"github.com/yuin/goldmark/renderer/html"
|
|
)
|
|
|
|
// renderMarkdown converts a limited and opinionated flavor of Markdown (compliant with
|
|
// CommonMark 0.29) to HTML for the purposes of Go websites.
|
|
//
|
|
// The Markdown source may contain raw HTML,
|
|
// but Go templates have already been processed.
|
|
func renderMarkdown(src []byte) ([]byte, error) {
|
|
// parser.WithHeadingAttribute allows custom ids on headings.
|
|
// html.WithUnsafe allows use of raw HTML, which we need for tables.
|
|
md := goldmark.New(
|
|
goldmark.WithParserOptions(parser.WithHeadingAttribute()),
|
|
goldmark.WithRendererOptions(html.WithUnsafe()))
|
|
var buf bytes.Buffer
|
|
if err := md.Convert(src, &buf); err != nil {
|
|
return nil, err
|
|
}
|
|
return buf.Bytes(), nil
|
|
}
|