added variable templating, template parts

This commit is contained in:
2025-10-12 14:35:15 +00:00
parent 68c9aad3a1
commit 1a1ef9b55f
10 changed files with 59 additions and 8 deletions

View File

@ -54,3 +54,10 @@ func Map_args(array ...string) map[string]string {
return result 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)
// }

View File

@ -1,5 +1,5 @@
{ {
"main":{"asd":"asd"}, "main":{"body":"message"},
"sec":"/api/sec", "sec":"/api/sec",
"thi":"/api/thi" "thi":"/api/thi"
} }

View File

@ -3,6 +3,7 @@ package manager
// package for the web menagment of the api paths // package for the web menagment of the api paths
import ( import (
"api_manager/lib"
"api_manager/web/api" "api_manager/web/api"
"api_manager/web/render" "api_manager/web/render"
"fmt" "fmt"
@ -29,3 +30,18 @@ func Show_apis(w http.ResponseWriter, req *http.Request) {
fmt.Fprint(w, render.Template_with_string(eval)) fmt.Fprint(w, render.Template_with_string(eval))
} }
func Render_apis(w http.ResponseWriter, req *http.Request) {
apis := api.Apis()
eval := "<div>"
for tag, varr := range apis {
eval_group := ""
eval_group += tag
eval_group += "-"
eval_group += fmt.Sprintf("%v", varr)
eval_group += "<br>"
eval += eval_group
}
eval += "</div>"
fmt.Fprint(w, render.Put_vars_to_template(render.Template_with_part("json_out"), lib.Map_args("json_code", eval)))
}

View File

@ -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 { func Template_of_tag(str string, html_tag string) string {
tag, err := os.ReadFile("web/views/tag/" + html_tag + ".html") tag, err := os.ReadFile("web/views/tag/" + html_tag + ".html")
result := strings.Replace(string(tag), "<fnr>", str, 1) result := strings.Replace(string(tag), "{{fnr}}", str, 1)
lib.Handle_err(err, lib.Map_args("die", "1")) lib.Handle_err(err, lib.Map_args("die", "1"))
return result 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 { func templating(file string, tag string, variable string) string {
content, err := os.ReadFile("web/views/" + file + ".html") content, err := os.ReadFile("web/views/" + file + ".html")
lib.Handle_err(err, lib.Map_args("die", "1")) 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) template_result := strings.Replace(string(content), find_tag, variable, 1)
return template_result 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
}

View File

@ -3,6 +3,8 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title> <title>{{template_title}}</title>
<style></style>
</head> </head>
<body> <body>

View File

@ -1 +1 @@
<welcome_message> {{welcome_message}}

View File

@ -0,0 +1,3 @@
<pre>
{{json_code}}
</pre>

View File

@ -1 +1 @@
<key>:<val> {{key}}:{{val}}

View File

@ -1,3 +1,3 @@
<div> <div>
<p><fnr></p> <p>{{fnr}}</p>
</div> </div>

View File

@ -12,7 +12,7 @@ func Server() {
http.HandleFunc("/", main_page) http.HandleFunc("/", main_page)
http.HandleFunc("/mgr/add", manager.Add_api) 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.HandleFunc("/api/", api.Get_api)
http.ListenAndServe(":8090", nil) http.ListenAndServe(":8090", nil)