From 1a1ef9b55f879c97452774ae33fa543b2e4a9783 Mon Sep 17 00:00:00 2001 From: n0rdye Date: Sun, 12 Oct 2025 14:35:15 +0000 Subject: [PATCH] added variable templating, template parts --- lib/lib.go | 7 +++++++ web/api/apis | 2 +- web/manager/manager.go | 16 ++++++++++++++++ web/render/render.go | 27 +++++++++++++++++++++++++-- web/views/head.html | 4 +++- web/views/main.html | 2 +- web/views/part/json_out.html | 3 +++ web/views/part/key-val.html | 2 +- web/views/tag/text.html | 2 +- web/web.go | 2 +- 10 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 web/views/part/json_out.html diff --git a/lib/lib.go b/lib/lib.go index 0d63a31..617e84e 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -54,3 +54,10 @@ func Map_args(array ...string) map[string]string { return result } + +// func Map_of_string_to_josn(array map[string]string) string { +// jData, err := json.Marshal(array) +// lib.Handle_err(err, lib.Map_args()) + +// return string(jData) +// } diff --git a/web/api/apis b/web/api/apis index b3ac723..009e9c1 100644 --- a/web/api/apis +++ b/web/api/apis @@ -1,5 +1,5 @@ { - "main":{"asd":"asd"}, + "main":{"body":"message"}, "sec":"/api/sec", "thi":"/api/thi" } \ No newline at end of file diff --git a/web/manager/manager.go b/web/manager/manager.go index 00d0e8f..68f6bc9 100644 --- a/web/manager/manager.go +++ b/web/manager/manager.go @@ -3,6 +3,7 @@ package manager // package for the web menagment of the api paths import ( + "api_manager/lib" "api_manager/web/api" "api_manager/web/render" "fmt" @@ -29,3 +30,18 @@ func Show_apis(w http.ResponseWriter, req *http.Request) { fmt.Fprint(w, render.Template_with_string(eval)) } + +func Render_apis(w http.ResponseWriter, req *http.Request) { + apis := api.Apis() + eval := "
" + for tag, varr := range apis { + eval_group := "" + eval_group += tag + eval_group += "-" + eval_group += fmt.Sprintf("%v", varr) + eval_group += "
" + eval += eval_group + } + eval += "
" + fmt.Fprint(w, render.Put_vars_to_template(render.Template_with_part("json_out"), lib.Map_args("json_code", eval))) +} diff --git a/web/render/render.go b/web/render/render.go index de49cc0..716e38a 100644 --- a/web/render/render.go +++ b/web/render/render.go @@ -47,19 +47,42 @@ func Template_with_page_vars(str string, tags_and_variables map[string]string) s func Template_of_tag(str string, html_tag string) string { tag, err := os.ReadFile("web/views/tag/" + html_tag + ".html") - result := strings.Replace(string(tag), "", str, 1) + result := strings.Replace(string(tag), "{{fnr}}", str, 1) lib.Handle_err(err, lib.Map_args("die", "1")) return result } +func Template_with_part(part_name string) string { + head, err := os.ReadFile("web/views/head.html") + lib.Handle_err(err, lib.Map_args("die", "1")) + page, err := os.ReadFile("web/views/part/" + part_name + ".html") + lib.Handle_err(err, lib.Map_args("die", "1")) + foot, err := os.ReadFile("web/views/foot.html") + lib.Handle_err(err, lib.Map_args("die", "1")) + + template := "" + string(head) + string(page) + string(foot) + fmt.Println(err) + + return template +} + func templating(file string, tag string, variable string) string { content, err := os.ReadFile("web/views/" + file + ".html") lib.Handle_err(err, lib.Map_args("die", "1")) - find_tag := `<` + tag + `>` + find_tag := `{{` + tag + `}}` template_result := strings.Replace(string(content), find_tag, variable, 1) return template_result } + +func Put_vars_to_template(template string, vars map[string]string) string { + for key, value := range vars { + fmt.Print(key, value) + template = strings.Replace(template, "{{"+key+"}}", value, 1) + } + + return template +} diff --git a/web/views/head.html b/web/views/head.html index b5124e0..f800de3 100644 --- a/web/views/head.html +++ b/web/views/head.html @@ -3,6 +3,8 @@ - Document + {{template_title}} + + \ No newline at end of file diff --git a/web/views/main.html b/web/views/main.html index 0f2b85c..aa5d08f 100644 --- a/web/views/main.html +++ b/web/views/main.html @@ -1 +1 @@ - \ No newline at end of file +{{welcome_message}} \ No newline at end of file diff --git a/web/views/part/json_out.html b/web/views/part/json_out.html new file mode 100644 index 0000000..0ea5a0f --- /dev/null +++ b/web/views/part/json_out.html @@ -0,0 +1,3 @@ +
+    {{json_code}}
+
\ No newline at end of file diff --git a/web/views/part/key-val.html b/web/views/part/key-val.html index 8f406b4..4ab0d65 100644 --- a/web/views/part/key-val.html +++ b/web/views/part/key-val.html @@ -1 +1 @@ -: \ No newline at end of file +{{key}}:{{val}} \ No newline at end of file diff --git a/web/views/tag/text.html b/web/views/tag/text.html index 3fdb996..c68b3e1 100644 --- a/web/views/tag/text.html +++ b/web/views/tag/text.html @@ -1,3 +1,3 @@
-

+

{{fnr}}

\ No newline at end of file diff --git a/web/web.go b/web/web.go index 48360e0..5099e61 100644 --- a/web/web.go +++ b/web/web.go @@ -12,7 +12,7 @@ func Server() { http.HandleFunc("/", main_page) http.HandleFunc("/mgr/add", manager.Add_api) - http.HandleFunc("/mgr/show", manager.Show_apis) + http.HandleFunc("/mgr/show", manager.Render_apis) http.HandleFunc("/api/", api.Get_api) http.ListenAndServe(":8090", nil)