package inflation import ( "bytes" "fmt" "io" "regexp" log "git.tijl.dev/tijl/tijl.dev-core/modules/logger" "github.com/go-echarts/go-echarts/v2/render" tpls "github.com/go-echarts/go-echarts/v2/templates" ) type InternalRenderer struct { render.BaseRender c interface{} before []func() } func NewRenderer(c interface{}, before ...func()) render.Renderer { return &InternalRenderer{c: c, before: before} } func CustomRender(r *InternalRenderer) (string, error) { for _, fn := range r.before { fn() } contents := []string{tpls.BaseTpl, tpls.ChartTpl} tpl := render.MustTemplate("chart", contents) var buf bytes.Buffer if err := tpl.ExecuteTemplate(&buf, "chart", r.c); err != nil { return "", err } log.Debug().Interface("bufst", buf.String()).Msg("t") return buf.String(), nil } func (r *InternalRenderer) Render(w io.Writer) error { return nil } var scriptRegex = regexp.MustCompile(`]*>([\s\S]*?)<\/script>`) func handleScriptElement(scriptTag string) string { matches := scriptRegex.FindStringSubmatch(scriptTag) if len(matches) > 1 { return matches[1] } return fmt.Sprintf(`window.onload = function() {%v}`, scriptTag) }