]> git.earlybird.gay Git - today/commitdiff
Support multiple results from compile
authorearly <me@earlybird.gay>
Mon, 25 Nov 2024 00:10:01 +0000 (17:10 -0700)
committerearly <me@earlybird.gay>
Mon, 25 Nov 2024 00:10:01 +0000 (17:10 -0700)
web/internal/compile/compile.go
web/page/page.go

index b6f1a864451fccd4c30fbbf1685d45fe496b95b3..5149dbfd874aca6139c18b12b2d31395513e7b3c 100644 (file)
@@ -42,15 +42,14 @@ type Result struct {
        TemplateDataLoader render.Loader
 }
 
-func Compile(root TemplateSource, transform ...func(root *html.Node)) (Result, error) {
-       var result Result
+func Compile(root TemplateSource, transform ...func(root *html.Node)) ([]Result, error) {
        reader, err := root.Source().Open()
        if err != nil {
-               return result, err
+               return nil, err
        }
        document, err := html.Parse(reader)
        if err != nil {
-               return result, err
+               return nil, err
        }
 
        fullDependencies := Sources{root.Name(): root}
@@ -82,7 +81,7 @@ func Compile(root TemplateSource, transform ...func(root *html.Node)) (Result, e
                }
                err := insertComponentSource(subSource, document)
                if err != nil {
-                       return result, err
+                       return nil, err
                }
                delete(fullDependencies, name)
        }
@@ -129,7 +128,7 @@ func Compile(root TemplateSource, transform ...func(root *html.Node)) (Result, e
        }
        err = process(document, computeRoot)
        if err != nil {
-               return result, err
+               return nil, err
        }
 
        // POSTPROCESSING
@@ -157,14 +156,14 @@ func Compile(root TemplateSource, transform ...func(root *html.Node)) (Result, e
 
        raw, err := renderDocument(document)
        if err != nil {
-               return result, err
+               return nil, err
        }
-       result = Result{
+       result := Result{
                TemplateRaw:        raw,
                TemplateFuncs:      templateFuncs,
                TemplateDataLoader: computeRoot,
        }
-       return result, err
+       return []Result{result}, nil
 }
 
 func renderDocument(document *html.Node) (string, error) {
index da7607ad56cf46e0cabac505e4c75e7d082665ea..2674eb2dc4cb841bba288b714b33027c4c1f1f84 100644 (file)
@@ -96,11 +96,12 @@ func New(name string, source string, optional ...Config) *Page {
        if p.indent != "" {
                sourceTransform = htmltree.Prettify(p.indent)
        }
-       result, err := compile.Compile(p, sourceTransform)
+       results, err := compile.Compile(p, sourceTransform)
        if err != nil {
                p.err = err
                return p
        }
+       result := results[0]
        p.raw = result.TemplateRaw
        p.templateLoad = result.TemplateDataLoader