aboutsummaryrefslogtreecommitdiff
path: root/internal/renderer
diff options
context:
space:
mode:
authorVikas Kushwaha <dev@vikas.rocks>2025-02-11 16:31:08 +0530
committerVikas Kushwaha <dev@vikas.rocks>2025-02-11 16:31:08 +0530
commit57eb8f6712361a3bf75983ce153fac4846dc0273 (patch)
tree269a168d59c917c4e313c819e2b4c3ff8175f912 /internal/renderer
Initial commit
Diffstat (limited to 'internal/renderer')
-rw-r--r--internal/renderer/renderer.go45
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
+}