internal/nixdocs/nixdocs.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package nixdocs
import (
"bytes"
"io"
"github.com/Southclaws/fault"
fences "github.com/stefanfritsch/goldmark-fences"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
"alin.ovh/searchix/internal/nixdocs/command"
"alin.ovh/searchix/internal/nixdocs/envvar"
"alin.ovh/searchix/internal/nixdocs/filepath"
"alin.ovh/searchix/internal/nixdocs/manpage"
"alin.ovh/searchix/internal/nixdocs/option"
"alin.ovh/searchix/internal/nixdocs/optlink"
"alin.ovh/searchix/internal/nixdocs/variable"
)
type Markdown string
var md = goldmark.New(
goldmark.WithExtensions(
extension.NewLinkify(),
&fences.Extender{},
optlink.New(),
option.New(),
command.New(),
envvar.New(),
variable.New(),
filepath.New(),
manpage.New(),
),
)
// implements gomponent.Node
func (text Markdown) Render(w io.Writer) error {
return fault.Wrap(md.Convert([]byte(text), w))
}
// implements io.WriterTo
func (text Markdown) WriteTo(w io.Writer) (int64, error) {
var buf bytes.Buffer
err := md.Convert([]byte(text), &buf)
if err != nil {
return 0, fault.Wrap(err)
}
n, err := w.Write(buf.Bytes())
return int64(n), fault.Wrap(err)
}
|