mirror of
https://github.com/thomiceli/opengist.git
synced 2025-05-14 08:12:09 +02:00

Added Chroma & Goldmark Added Mermaidjs More languages supported Add default values for gist links input Added copy code from markdown blocks
48 lines
1.1 KiB
Go
48 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{},
|
|
),
|
|
)
|
|
}
|