نسخ من khaledmahfouz5/Maqtaa
Added Chroma & Goldmark Added Mermaidjs More languages supported Add default values for gist links input Added copy code from markdown blocks
48 أسطر
1.1 KiB
Go
48 أسطر
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{},
|
|
),
|
|
)
|
|
}
|