From 30323c0d5953cf261717d148abb0aaab78e33fad Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Sat, 7 Dec 2024 01:57:53 -0500 Subject: [PATCH] providers/import: Add execute function that returns ExecutionResult --- providers/import/import.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/providers/import/import.go b/providers/import/import.go index 96845cf..013809b 100644 --- a/providers/import/import.go +++ b/providers/import/import.go @@ -22,6 +22,7 @@ func (this *Provider) FuncMapFor (document *step.Document) template.FuncMap { document: document, } return template.FuncMap { + "execute": stat.funcExecute, "include": stat.funcInclude, "includeHTML": stat.funcIncludeHTML, } @@ -31,16 +32,28 @@ type state struct { document *step.Document } -func (this *state) funcInclude (name string, data any) (string, error) { +func (this *state) funcExecute (name string, data any) (step.ExecutionResult, error) { document, err := this.document.Environment().Parse(name) - if err != nil { return "", err } + if err != nil { return step.ExecutionResult { }, err } builder := strings.Builder { } err = document.Execute(&builder, step.ExecutionData { Data: data }) - if err != nil { return "", err } - return builder.String(), nil + if err != nil { return step.ExecutionResult { }, err } + return step.ExecutionResult { + Author: document.Author, + Title: document.Title, + Extends: document.Extends, + FrontMatter: document.FrontMatter, + Body: template.HTML(builder.String()), + }, nil +} + +func (this *state) funcInclude (name string, data any) (string, error) { + result, err := this.funcIncludeHTML(name, data) + return string(result), err } func (this *state) funcIncludeHTML (name string, data any) (template.HTML, error) { - result, err := this.funcInclude(name, data) - return template.HTML(result), err + result, err := this.funcExecute(name, data) + if err != nil { return "", err } + return result.Body, nil }