From 57eb8f6712361a3bf75983ce153fac4846dc0273 Mon Sep 17 00:00:00 2001 From: Vikas Kushwaha Date: Tue, 11 Feb 2025 16:31:08 +0530 Subject: Initial commit --- internal/renderer/renderer.go | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 internal/renderer/renderer.go (limited to 'internal/renderer') diff --git a/internal/renderer/renderer.go b/internal/renderer/renderer.go new file mode 100644 index 0000000..92af85c --- /dev/null +++ b/internal/renderer/renderer.go @@ -0,0 +1,45 @@ +package renderer + +import ( + "errors" + "projecty/internal/authentication" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/template/html/v2" +) + +func ViewEngineStart() *html.Engine { + + viewEngine := html.New("./cmd/web/templates", ".tmpl") + + viewEngine.AddFunc("IsAuthenticated", func(c *fiber.Ctx) bool { + isAuthenticated, _ := authentication.AuthGet(c) + return isAuthenticated + }) + + viewEngine.AddFunc("Iterate", func(start int, end int) []int { + n := end - start + 1 + result := make([]int, n) + for i := 0; i < n; i++ { + result[i] = start + i + } + return result + }) + + viewEngine.AddFunc("Dict", func(values ...interface{}) (map[string]interface{}, error) { + if len(values)%2 != 0 { + return nil, errors.New("invalid dict call") + } + dict := make(map[string]interface{}, len(values)/2) + for i := 0; i < len(values); i += 2 { + key, ok := values[i].(string) + if !ok { + return nil, errors.New("dict keys must be strings") + } + dict[key] = values[i+1] + } + return dict, nil + }) + + return viewEngine +} -- cgit v1.2.3