From 10c60b3c9ba2c17419534cf4089328a66568e4f1 Mon Sep 17 00:00:00 2001 From: Mitchell Riedstra Date: Sat, 3 Dec 2022 13:38:05 -0500 Subject: Add a couple handlers to serve up JSON and markdown --- page/page.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'page/page.go') diff --git a/page/page.go b/page/page.go index d34a1f7..29b35bc 100644 --- a/page/page.go +++ b/page/page.go @@ -55,7 +55,10 @@ type Page struct { Date *PageTime Published bool Vars map[string]interface{} - markdown []byte + // Keys of vars to be included when RenderJson is called, all vars are + // omitted if empty. + JsonVars []string + markdown []byte } // Global is meant to be supplied by external users of this package to populate @@ -232,6 +235,13 @@ func (p *Page) Read() error { // markdown file, then runs it through the markdown parser. Typically // this is called in the base template. func (p *Page) RenderBody() (string, error) { + s, err := p.GetMarkdown() + return string(blackfriday.Run([]byte(s))), err +} + +// GetMarkdown renders and executes a template from the body of the +// markdown file, then simply returns the unrendered markdown. +func (p *Page) GetMarkdown() (string, error) { buf := &bytes.Buffer{} t, err := template.New("Body").Funcs(Funcs).Parse(string(p.markdown)) @@ -245,7 +255,7 @@ func (p *Page) RenderBody() (string, error) { return "", fmt.Errorf("template execute; %w", err) } - return string(blackfriday.Run(buf.Bytes())), nil + return buf.String(), nil } func (p Page) String() string { -- cgit v1.2.3