mirror of
https://github.com/rwinkhart/glamour-temp-MUTN.git
synced 2026-10-27 19:49:58 -04:00
Use default styles instead of statik
This commit is contained in:
1 parent
bdbe6ae0c5
commit
76ba5695bd
4 files changed
+23
-35
No files matched your search
+23
-20
@@ -3,11 +3,10 @@ package glamour
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/rakyll/statik/fs"
|
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
"github.com/yuin/goldmark/extension"
|
"github.com/yuin/goldmark/extension"
|
||||||
"github.com/yuin/goldmark/parser"
|
"github.com/yuin/goldmark/parser"
|
||||||
@@ -15,11 +14,8 @@ import (
|
|||||||
"github.com/yuin/goldmark/util"
|
"github.com/yuin/goldmark/util"
|
||||||
|
|
||||||
"github.com/charmbracelet/glamour/ansi"
|
"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.
|
// A TermRendererOption sets an option on a TermRenderer.
|
||||||
type TermRendererOption func(*TermRenderer) error
|
type TermRendererOption func(*TermRenderer) error
|
||||||
|
|
||||||
@@ -32,14 +28,6 @@ type TermRenderer struct {
|
|||||||
renderBuf bytes.Buffer
|
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
|
// Render initializes a new TermRenderer and renders a markdown with a specific
|
||||||
// style.
|
// style.
|
||||||
func Render(in string, stylePath string) (string, error) {
|
func Render(in string, stylePath string) (string, error) {
|
||||||
@@ -103,11 +91,12 @@ func WithBaseURL(baseURL string) TermRendererOption {
|
|||||||
// style.
|
// style.
|
||||||
func WithStandardStyle(style string) TermRendererOption {
|
func WithStandardStyle(style string) TermRendererOption {
|
||||||
return func(tr *TermRenderer) error {
|
return func(tr *TermRenderer) error {
|
||||||
jsonBytes, err := fs.ReadFile(statikFS, "/"+style+".json")
|
styles, err := getDefaultStyle(style)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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 {
|
func WithStylePath(stylePath string) TermRendererOption {
|
||||||
return func(tr *TermRenderer) error {
|
return func(tr *TermRenderer) error {
|
||||||
jsonBytes, err := ioutil.ReadFile(stylePath)
|
jsonBytes, err := ioutil.ReadFile(stylePath)
|
||||||
if os.IsNotExist(err) {
|
switch {
|
||||||
jsonBytes, err = fs.ReadFile(statikFS, "/"+stylePath+".json")
|
case err == nil:
|
||||||
}
|
return json.Unmarshal(jsonBytes, &tr.ansiOptions.Styles)
|
||||||
if err != nil {
|
case os.IsNotExist(err):
|
||||||
|
styles, err := getDefaultStyle(stylePath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
tr.ansiOptions.Styles = *styles
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
return err
|
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)
|
err := tr.md.Convert(in, &buf)
|
||||||
return buf.Bytes(), err
|
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
|
||||||
|
}
|
||||||
@@ -9,6 +9,5 @@ require (
|
|||||||
github.com/microcosm-cc/bluemonday v1.0.2
|
github.com/microcosm-cc/bluemonday v1.0.2
|
||||||
github.com/muesli/reflow v0.0.0-20191216070243-e5efeac4e302
|
github.com/muesli/reflow v0.0.0-20191216070243-e5efeac4e302
|
||||||
github.com/olekukonko/tablewriter v0.0.4
|
github.com/olekukonko/tablewriter v0.0.4
|
||||||
github.com/rakyll/statik v0.1.6
|
|
||||||
github.com/yuin/goldmark v1.1.19
|
github.com/yuin/goldmark v1.1.19
|
||||||
)
|
)
|
||||||
@@ -47,8 +47,6 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
|
|||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rakyll/statik v0.1.6 h1:uICcfUXpgqtw2VopbIncslhAmE5hwc4g20TEyEENBNs=
|
|
||||||
github.com/rakyll/statik v0.1.6/go.mod h1:OEi9wJV/fMUAGx1eNjq75DKDsJVuEv1U0oYdX6GX8Zs=
|
|
||||||
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
|
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
|
||||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
// Code generated by statik. DO NOT EDIT.
|
|
||||||
|
|
||||||
package statik
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/rakyll/statik/fs"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
data := "PK\x03\x04\x14\x00\x08\x00\x08\x00&\x1b\x94O\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x00dark.jsonUT\x05\x00\x01\x19?\xfc]\xac\x97Mn\xeb6\x10\x80\xf7>\x05!o\xd3\x07\xc5?\xb2\x92\x9d\x13\x8b@\xcf\xd0<\x0845v\x08S\xa4JR\xef\x07\x81\x81\x87.z\x80\xb6\xcb\x02-z\x88\xaez\x9a\x9c\xa0G(h[\x12%\x91~/@- \x009\xf3\xcd\x0c9\xc3\x19\xe4e\x82PTHZ\x97 Lt\x8f\xec\x1a\xa1\x88\x89\xe2\xbc\x9e\xdd\x9c7\xb6\\\xd2C^)\xd8\xb1O\xd1=\x8a\x9eD\xd4\x93\xe8z7\x92P\xc9\xa5\xb2[\xb3\xe5,\x9a t\xb4\xfb\xd13\x90\x82\x89}\xe7\xeb\x1b\x0c\xcc\xefZo\x92\x17\xd1=2\xaa\x86\xce\xe2mg\xac\x8b\x105Hg\xb9\xdd\xda\x12z\xd8+Y\x8b\"o}$\xf3q\xdc\xb3\xf4\xaa\xdf\x99\xcf\xeft\x8a\x9c\xc3\xce\xfd*=\x9dE@\xa7\xa7\xb4\x0c)\xf5\xb4\x92\xa0\xd6\x14\x8dou98\xdd\x8ep\xdd\x1d\xcf\xc0\xa7SE\x9cW\x9ci\xa7>8|\x00\x9ewU\xd2B\xcc@9Lm\x17\xc9\xeb\x97\xbf\x9chA\xd4%(b\x98\x14a\xe4\x9d\x03p&\x0ey\x13\xd6\xd7\x0e\xd3K\x95%;\xa8\x16\x05(\xce\x04\\\xd4F\x17\x13w>YI\xf60p\xba\x93\xaa$v\x1d}o\xa5\xf7\xe8\xe5\xe5\x9d\xd58\x1e\xd1\xeb\xcf\xbf\x8c\xcbh1\x1f\xd8\xfb\xf6Pf\xb7\xce\xd31d\xcb\x1d\x96\x820\xa0r\x0d\x15Q\xc4\x9c\xf5_\x7f\xfb\xc7\xf1_\x97b(\xfe\xa9\x11+\xf9q(\xfb\xe2\xba\xd2\xbd\x0b3\x8c\x1e\xc0^k\xf4\x03z\xdf\x96\x92\xb3\xfb\xfa\xfb\xaf\xef\x9dTi\xa3\xd8\x01\xcc\xb3\x92\xf5\xfe\xd9 YI\xad\xa1\xc8em\x86)\x82\xb2r\x14\x99!\x9c\xd1\xa1\x8e6J\xf6Z\x87\xefU*_\xa2\x9e\xc4w\x97\x9f\xaf?-\x9c\x84\x9f\x0b\xf0\xc7Z\x1a\xf0\xf4\xc3\xdb\x1bw#7\xf2\x00\xe2r\xb1\xce\xe9\x0b\xd81\xc1la\xe7\xcd\xbb\x19 \x0c\xa8\xd2+(@S\xc5\xaa\xeb\xcf\xe2I\xfc\xfb\xc7\x9f\x7f\xbbO\xdf\x94<?iuFO{\xba\"\xa2\xdb\xa2\xb2\x80\xff\xa3[\xce\xe6\xc9\xf8\x1ac\xa7\xce\xad\xa3.\x9e\xb3fI\xd4\x9e g\xaa8\x19X\xb4\xe6\x9e\x95,I\x0b9\x8d\xe8\xb2v\xb9\xe9\xe3\xc2~\xd1Et\xbci\x18PJ\xaa\x10\x84o\xed\x17\xddt2\xdf\x11\xa78^>,\x1f\xc6\xb6\xa9,{\xd3r`=Y\xd9/\x88\xd9$VJ\xd2`p8]-\xf1\x18?\xc0\xe7\x8fR\x15!,\x8e\xd7k\x1c\xc6r\x05\x1a\xd4\x07\x08\xf2\x18/\xf1f\x16\xe6\x05)AW\x84\xc25\x03\xa9\xe7\xd8\x8d\x01\xf3\xb9\n\xb2I\x96d\x9bt\xcc\xca\n\x9a\xf6\xe4\xe52\x9c\xc6i<\xe6\xaaZPS\xf7'\xcb\x10M\xb3t\xedqi\xcf\xf9\xd6b\xb3L\xbe\xad\x197,\xe8\x0f\xe34{\xf4\\\xcf\x895d\x1f\xe2\x1e\xe2t\x9e\xad\x03\x1c1F\xb1mm\x82\x11\xaf\xd6\xabu\x96\x04h\xca\x89\xd6ox#]\xb3uv\x87\x03\xcc\xef\xaa\x00*\xaff\x12c\xec\xad\x9e\x13\xbd\xb3\xe9\xbc\x92\xcb8\xde\xac|0g\x06\x14\xe1\xb9\xa8\xcb-\x04]'Y\x86\x1f=E\xd4\xd0v\x94\x89`~\x1e\x93\xbb$\xb9\xfb\x1a\x9d\x83\xa6$\\\xffk\x8c\xf1\xc6s\x80=\x08P\x8c\xe6\x05p0W\xde\xee\xc6\xdf\xa8\x1a\xbc7ZO\x92\xe1x\xf5s\x83q\x8b\xd0h\xe4\xfa9&4\xa8+\xf1\x86\xf2\xd5\xfa\xad\xb7\xc3\xff\x12\x06\x16V\xa7\xdf\xd8B\xd7\xc7\x07Q\xfb\xfa\xfb|e\xbf\xd6\xc8\xa4\xf9{\x9c\x1c'\xff\x05\x00\x00\xff\xffPK\x07\x08|5\xfehb\x03\x00\x00\x18\x0d\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00o\x0f\x96O\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00light.jsonUT\x05\x00\x01\x02\xce\xfe]\xacWM\x8e\xeb6\x0c\xde\xe7\x14\x86\xb3\x9d>8v\x1c'\xb3K2c\xa0g\xe8{0\x14\x99\xc9\x08\x91%W\x92\xdf\x0f\x06\x01\x1e\xba\xe8\x01\xda.\x0b\xb4\xe8!\xba\xeai\xe6\x04=B\xa1\xfcX\xb2,\x05oQ\x0b\x08 \x92\x1f?J\xa4H\xe4u\x12Eq\xcdq\xd7\x00S\xf1c\xa4\xf7Q\x14\x13V_\xf6\xe9\xc3E\xb0\xa3\x1c\x1f\xabV\xc0\x9e|\x8e\x1f\xa3\xf8=\x8b\x07\x1a\xd9\xedG\x1a\xcc)\x17Z\x94f\xf3x\x12E'-\x8f_\x00\xd5\x84\x1d\x0c\xd7\xb78(z6N\xeb\xf81R\xa2\x03\xe3qf\x9c\x99\x08\xa3\x1b\xc4x\xeeE;\x84\x8f\x07\xc1;VW=\xc7\"\x1b\xd3\xa6\xcb\xbb\xbc\xa9\x8fw:\x8d\xac\xc3f~\x93\x81\xcd<`30\xcaCF\x03\xabE\xd0j\x1a9G\xd9#*\xcdY\x14|>\xa7\xff\xb2\xa3DZ\xc5@\xe1#\xd0\xca\x94D\x0f\"\n\x1a7\x8f\x86\xf6\xed\xeb_Vh\xc0\xba\x06\x04R\x84\xb30\xe4\x9d\x05\xa0\x84\x1d\xab[XnbV\xf7\xf2\xa2\x91\x06\xd4\xb1\x1a\x04%\x0c\xaefn\x92\xb3\x85\xe1$\x0d:\x80C\xba\xe7\xa2Az\x1f\x7f\xaf\xb5\x8f\xd1\xeb\xeb;mq:Eo?\xff2\xae\x99y\xe6\xf8\xfb\xf6P\xd2$7X\x85v\xd4\xc2b`\nD%\xa1E\x02\xa9\x8b\xfd\xdbo\xffX\xfc]\xc3\\\xf5O7\xb5\xe0\x9f\\\xddW\x9bJ\x0e.L\x11|\x04}\xad\xf1\x0f\xd1\x87\xben,\xe9\xdb\xef\xbf~\xb0R%\x95 GP/\x82w\x87\x17+d\xc1\xa5\x84\xba\xe2\x9drS\x04Mk\x19\x12\x85(\xc1\xae\x8dT\x82\x0f\xfa\x84\xef \n_\xa2\xde\xb3\xef\xae\x9f\xaf\x97\xccW&\xf2K\x01\xfe\xd8q\x05\x9e\xe67{\xb0\x05\x95\xe2G`\xd7\x8b\xb5N_\xc3\x9e0\xa2\x0b\xbb\xba\xbd\x9b\x91B\x81h\xbc\x8a\x1a$\x16\xa4\xbd\xff,\xde\xb3\x7f\xff\xf8\xf3o\xfb\x9d\xab\x86Vg+\xe3\xf4,\x93-bF\x84y\x0d\xffGkL\xf3\xf9\xf8\x1a\x13\xab\xce5\x91\x89\xe7b\xd9 q \xcc\x1a!V\x06\xd2\xde\xdd\x8b\xe0\x0d\xeaAV#\xba\xeem\xdc4]\xeb\x15_U\xa7\x87\x1b\x06\x84\xe0\"\x04*gz\xc5\x0fF\xe7;\xe2\xb4,\xf3<\xcf\xc7\xbe1o\x06\xa3\xd1\xf1\xbe|\xd2+\x08\xd3Il\x05\xc7\xc1\xe0\xcae\x91\x97c\xf8\x11\xbe|\xe2\xa2\x0e^D\xb1z.\xb7AX%@\x82\xf8\x08A|Y\xe6\xe5S\x1a\xc63\xd4\x80l\x11\x86\xa0\x83\xcd<Y\x84\xe3\xae\xd4\x976\x88-\x92\xf9j\xeb!\xe7-\xdc\xdaS \xe8t\x91.\xc6\xb8\xb6cXu\xc3\xc9\xe2B\xd7\xc5\xb2X\x8e\xa1\xfa\x9c\xd5\xae#T\x91 6Y\xcf6\x9bY\x00\xab\xd0!\x84\xcb\x97\xb3t\x95\x04pH)Av\x9d\n^\xd22[\xa4\xdbM\x00\x8d)\x922X\x1b3\xbd\x06\xf5n\x1a\xa7%u\x87Q\x80\x8a3\xa9P\xb8\xfe\xef\x9e\xb2\x06\xcc\xef\xa6t\x9d\xad\xb3\xd4S\ng\xf4^\xe7\xf5NR\x93\xd9\xaa\xcc\x8b1\x98\x12\x05\x02\xd1Line truncated
|
|
||||||
fs.Register(data)
|
|
||||||
}
|
|
||||||
Reference in new issue
Block a user