From 8a6d35e25d0db15e6dd7fe4452fba23d0947169e Mon Sep 17 00:00:00 2001 From: Koy Zhuang Date: Mon, 22 Jan 2024 21:27:34 +0800 Subject: [PATCH] update: expose content (#360) --- render/chart.go | 14 +++++++++----- render/engine.go | 1 + render/page.go | 11 +++++++---- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/render/chart.go b/render/chart.go index 70fe94766..518b3e3ef 100644 --- a/render/chart.go +++ b/render/chart.go @@ -19,6 +19,13 @@ func NewChartRender(c interface{}, before ...func()) Renderer { // Render renders the chart into the given io.Writer. func (r *chartRender) Render(w io.Writer) error { + + content := r.RenderContent() + _, err := w.Write(content) + return err +} + +func (r *chartRender) RenderContent() []byte { for _, fn := range r.before { fn() } @@ -28,11 +35,8 @@ func (r *chartRender) Render(w io.Writer) error { var buf bytes.Buffer if err := tpl.ExecuteTemplate(&buf, ModChart, r.c); err != nil { - return err + panic(err) } - content := pat.ReplaceAll(buf.Bytes(), []byte("")) - - _, err := w.Write(content) - return err + return pat.ReplaceAll(buf.Bytes(), []byte("")) } diff --git a/render/engine.go b/render/engine.go index 34e775284..45452450f 100644 --- a/render/engine.go +++ b/render/engine.go @@ -27,6 +27,7 @@ var pat = regexp.MustCompile(`(__f__")|("__f__)|(__f__)`) // you can define your own render logic easily. type Renderer interface { Render(w io.Writer) error + RenderContent() []byte } // isSet check if the field exist in the chart instance diff --git a/render/page.go b/render/page.go index aae7a3225..365e24af3 100644 --- a/render/page.go +++ b/render/page.go @@ -19,6 +19,12 @@ func NewPageRender(c interface{}, before ...func()) Renderer { // Render renders the page into the given io.Writer. func (r *pageRender) Render(w io.Writer) error { + content := r.RenderContent() + _, err := w.Write(content) + return err +} + +func (r *pageRender) RenderContent() []byte { for _, fn := range r.before { fn() } @@ -31,8 +37,5 @@ func (r *pageRender) Render(w io.Writer) error { panic(err) } - content := pat.ReplaceAll(buf.Bytes(), []byte("")) - - _, err := w.Write(content) - return err + return pat.ReplaceAll(buf.Bytes(), []byte("")) }