Skip to content

Commit

Permalink
add: Add RenderSnippet method to the Renderer interface and Implement…
Browse files Browse the repository at this point in the history
… it in chartRender & pageRender
  • Loading branch information
sdqri committed Apr 3, 2024
1 parent f76e1e8 commit 0364092
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
26 changes: 26 additions & 0 deletions render/chart.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,29 @@ func (r *chartRender) RenderContent() []byte {

return pat.ReplaceAll(buf.Bytes(), []byte(""))
}

func (r *chartRender) RenderSnippet() ChartSnippet {
for _, fn := range r.before {
fn()
}

elementTpl := MustTemplate(ModChart, []string{templates.BaseTpl, templates.BaseElementTpl})

var snippet ChartSnippet
var elementBuf bytes.Buffer // Buffer to collect template output

if err := elementTpl.ExecuteTemplate(&elementBuf, ModChart, r.c); err != nil {
panic(err)
}
snippet.Element = string(pat.ReplaceAll(elementBuf.Bytes(), []byte("")))

scriptTpl := MustTemplate(ModChart, []string{templates.BaseTpl, templates.BaseScriptTpl})
var scriptBuf bytes.Buffer // Buffer to collect template output

if err := scriptTpl.ExecuteTemplate(&scriptBuf, ModChart, r.c); err != nil {
panic(err)
}
snippet.Script = string(pat.ReplaceAll(scriptBuf.Bytes(), []byte("")))

return snippet
}
6 changes: 6 additions & 0 deletions render/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,18 @@ const (

var pat = regexp.MustCompile(`(__f__")|("__f__)|(__f__)`)

type ChartSnippet struct {
Element string
Script string
}

// Renderer
// Any kinds of charts have their render implementation and
// you can define your own render logic easily.
type Renderer interface {
Render(w io.Writer) error
RenderContent() []byte
RenderSnippet() ChartSnippet
}

// isSet check if the field exist in the chart instance
Expand Down
26 changes: 26 additions & 0 deletions render/page.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,29 @@ func (r *pageRender) RenderContent() []byte {

return pat.ReplaceAll(buf.Bytes(), []byte(""))
}

func (r *pageRender) RenderSnippet() ChartSnippet {
for _, fn := range r.before {
fn()
}

elementTpl := MustTemplate(ModPage, []string{templates.BaseTpl, templates.BaseElementTpl, templates.BaseElementsTpl})

var snippet ChartSnippet
var elementBuf bytes.Buffer

if err := elementTpl.ExecuteTemplate(&elementBuf, ModPage, r.c); err != nil {
panic(err)
}
snippet.Element = string(pat.ReplaceAll(elementBuf.Bytes(), []byte("")))

scriptTpl := MustTemplate(ModPage, []string{templates.BaseTpl, templates.BaseScriptTpl, templates.BaseScriptsTpl})
var scriptBuf bytes.Buffer

if err := scriptTpl.ExecuteTemplate(&scriptBuf, ModPage, r.c); err != nil {
panic(err)
}
snippet.Script = string(pat.ReplaceAll(scriptBuf.Bytes(), []byte("")))

return snippet
}

0 comments on commit 0364092

Please sign in to comment.