// 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 }