diff --git a/internal/templateutil/templateutil.go b/internal/templateutil/templateutil.go index f24a633..7740b1e 100644 --- a/internal/templateutil/templateutil.go +++ b/internal/templateutil/templateutil.go @@ -5,9 +5,11 @@ import ( "html/template" "io/fs" + "source.toby3d.me/toby3d/home/internal/site" "source.toby3d.me/toby3d/home/internal/templateutil/partials" "source.toby3d.me/toby3d/home/internal/templateutil/safe" "source.toby3d.me/toby3d/home/internal/templateutil/strings" + "source.toby3d.me/toby3d/home/internal/templateutil/urls" ) type Function struct { @@ -16,7 +18,7 @@ type Function struct { Name string } -func New(dir fs.FS) (template.FuncMap, error) { +func New(dir fs.FS, siter site.UseCase) (template.FuncMap, error) { partialDir, err := fs.Sub(dir, "partials") if err != nil { return nil, fmt.Errorf("cannot substitute into partials subdirectory: %w", err) @@ -41,12 +43,21 @@ func New(dir fs.FS) (template.FuncMap, error) { "safeHTML": safeNamespace.HTML, }, }) - partialNamespace := partials.New(partialDir, funcMap) + partialsNamespace := partials.New(partialDir, funcMap) funcs = append(funcs, Function{ Name: "partials", - Handler: func(v ...any) any { return partialNamespace }, + Handler: func(v ...any) any { return partialsNamespace }, Methods: template.FuncMap{ - "partial": partialNamespace.Include, + "partial": partialsNamespace.Include, + }, + }) + urlsNamespace := urls.New(siter) + funcs = append(funcs, Function{ + Name: "urls", + Handler: func(v ...any) any { return urlsNamespace }, + Methods: template.FuncMap{ + "absURL": urlsNamespace.AbsURL, + "relURL": urlsNamespace.RelURL, }, })