mirror of
https://github.com/rwinkhart/glamour-temp-MUTN.git
synced 2026-09-06 00:47:15 -04:00
Use default styles instead of statik
This commit is contained in:
committed by
Christian Muehlhaeuser
parent
bdbe6ae0c5
commit
76ba5695bd
+23
-20
@@ -3,11 +3,10 @@ package glamour
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/rakyll/statik/fs"
|
||||
"github.com/yuin/goldmark"
|
||||
"github.com/yuin/goldmark/extension"
|
||||
"github.com/yuin/goldmark/parser"
|
||||
@@ -15,11 +14,8 @@ import (
|
||||
"github.com/yuin/goldmark/util"
|
||||
|
||||
"github.com/charmbracelet/glamour/ansi"
|
||||
_ "github.com/charmbracelet/glamour/statik" // pre-generated styles
|
||||
)
|
||||
|
||||
var statikFS http.FileSystem
|
||||
|
||||
// A TermRendererOption sets an option on a TermRenderer.
|
||||
type TermRendererOption func(*TermRenderer) error
|
||||
|
||||
@@ -32,14 +28,6 @@ type TermRenderer struct {
|
||||
renderBuf bytes.Buffer
|
||||
}
|
||||
|
||||
func init() {
|
||||
var err error
|
||||
statikFS, err = fs.New()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Render initializes a new TermRenderer and renders a markdown with a specific
|
||||
// style.
|
||||
func Render(in string, stylePath string) (string, error) {
|
||||
@@ -103,11 +91,12 @@ func WithBaseURL(baseURL string) TermRendererOption {
|
||||
// style.
|
||||
func WithStandardStyle(style string) TermRendererOption {
|
||||
return func(tr *TermRenderer) error {
|
||||
jsonBytes, err := fs.ReadFile(statikFS, "/"+style+".json")
|
||||
styles, err := getDefaultStyle(style)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return json.Unmarshal(jsonBytes, &tr.ansiOptions.Styles)
|
||||
tr.ansiOptions.Styles = *styles
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,13 +106,19 @@ func WithStandardStyle(style string) TermRendererOption {
|
||||
func WithStylePath(stylePath string) TermRendererOption {
|
||||
return func(tr *TermRenderer) error {
|
||||
jsonBytes, err := ioutil.ReadFile(stylePath)
|
||||
if os.IsNotExist(err) {
|
||||
jsonBytes, err = fs.ReadFile(statikFS, "/"+stylePath+".json")
|
||||
}
|
||||
if err != nil {
|
||||
switch {
|
||||
case err == nil:
|
||||
return json.Unmarshal(jsonBytes, &tr.ansiOptions.Styles)
|
||||
case os.IsNotExist(err):
|
||||
styles, err := getDefaultStyle(stylePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tr.ansiOptions.Styles = *styles
|
||||
return nil
|
||||
default:
|
||||
return err
|
||||
}
|
||||
return json.Unmarshal(jsonBytes, &tr.ansiOptions.Styles)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,3 +189,11 @@ func (tr *TermRenderer) RenderBytes(in []byte) ([]byte, error) {
|
||||
err := tr.md.Convert(in, &buf)
|
||||
return buf.Bytes(), err
|
||||
}
|
||||
|
||||
func getDefaultStyle(style string) (*ansi.StyleConfig, error) {
|
||||
styles, ok := DefaultStyles[style]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("%s: style not found", style)
|
||||
}
|
||||
return styles, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user