mirror of
https://github.com/thomiceli/opengist.git
synced 2024-12-23 04:52:40 +00:00
845e28dd59
Added Chroma & Goldmark Added Mermaidjs More languages supported Add default values for gist links input Added copy code from markdown blocks
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package render
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/alecthomas/chroma/v2/formatters/html"
|
|
"github.com/thomiceli/opengist/internal/db"
|
|
"github.com/thomiceli/opengist/internal/git"
|
|
"github.com/yuin/goldmark"
|
|
emoji "github.com/yuin/goldmark-emoji"
|
|
highlighting "github.com/yuin/goldmark-highlighting/v2"
|
|
"github.com/yuin/goldmark/extension"
|
|
"go.abhg.dev/goldmark/mermaid"
|
|
)
|
|
|
|
func MarkdownGistPreview(gist *db.Gist) (RenderedGist, error) {
|
|
var buf bytes.Buffer
|
|
err := newMarkdown().Convert([]byte(gist.Preview), &buf)
|
|
|
|
return RenderedGist{
|
|
Gist: gist,
|
|
HTML: buf.String(),
|
|
}, err
|
|
}
|
|
|
|
func MarkdownFile(file *git.File) (RenderedFile, error) {
|
|
var buf bytes.Buffer
|
|
err := newMarkdown().Convert([]byte(file.Content), &buf)
|
|
|
|
return RenderedFile{
|
|
File: file,
|
|
HTML: buf.String(),
|
|
Type: "Markdown",
|
|
}, err
|
|
}
|
|
|
|
func newMarkdown() goldmark.Markdown {
|
|
return goldmark.New(
|
|
goldmark.WithExtensions(
|
|
extension.GFM,
|
|
highlighting.NewHighlighting(
|
|
highlighting.WithStyle("catppuccin-latte"),
|
|
highlighting.WithFormatOptions(html.WithClasses(true))),
|
|
emoji.Emoji,
|
|
&mermaid.Extender{},
|
|
),
|
|
)
|
|
}
|