diff options
author | Vikas Kushwaha <dev@vikas.rocks> | 2025-02-11 16:31:08 +0530 |
---|---|---|
committer | Vikas Kushwaha <dev@vikas.rocks> | 2025-02-11 16:31:08 +0530 |
commit | 57eb8f6712361a3bf75983ce153fac4846dc0273 (patch) | |
tree | 269a168d59c917c4e313c819e2b4c3ff8175f912 /internal/renderer |
Initial commit
Diffstat (limited to 'internal/renderer')
-rw-r--r-- | internal/renderer/renderer.go | 45 |
1 files changed, 45 insertions, 0 deletions
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 +} |