2024-09-11 00:52:18 +00:00
|
|
|
package h
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/gofiber/fiber/v2"
|
2024-09-11 17:31:40 +00:00
|
|
|
"html"
|
2024-09-11 00:52:18 +00:00
|
|
|
"net/http"
|
|
|
|
|
"reflect"
|
|
|
|
|
"runtime"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Headers = map[string]string
|
|
|
|
|
|
|
|
|
|
type Partial struct {
|
|
|
|
|
Headers *Headers
|
|
|
|
|
Root *Node
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func (p *Partial) Render() *Node {
|
|
|
|
|
return p.Root
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 00:52:18 +00:00
|
|
|
type Page struct {
|
2024-09-11 23:41:21 +00:00
|
|
|
Root Renderable
|
2024-09-11 00:52:18 +00:00
|
|
|
HttpMethod string
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func NewPage(root Renderable) *Page {
|
2024-09-11 00:52:18 +00:00
|
|
|
return &Page{
|
|
|
|
|
HttpMethod: http.MethodGet,
|
|
|
|
|
Root: root,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func NewPageWithHttpMethod(httpMethod string, root Renderable) *Page {
|
2024-09-11 00:52:18 +00:00
|
|
|
return &Page{
|
|
|
|
|
HttpMethod: httpMethod,
|
|
|
|
|
Root: root,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func NewPartialWithHeaders(headers *Headers, root Renderable) *Partial {
|
2024-09-11 00:52:18 +00:00
|
|
|
return &Partial{
|
|
|
|
|
Headers: headers,
|
2024-09-11 23:41:21 +00:00
|
|
|
Root: root.Render(),
|
2024-09-11 00:52:18 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-11 23:41:21 +00:00
|
|
|
func NewPartial(root Renderable) *Partial {
|
2024-09-11 00:52:18 +00:00
|
|
|
return &Partial{
|
2024-09-11 23:41:21 +00:00
|
|
|
Root: root.Render(),
|
2024-09-11 00:52:18 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetPartialPath(partial func(ctx *fiber.Ctx) *Partial) string {
|
2024-09-13 01:31:18 +00:00
|
|
|
return runtime.FuncForPC(reflect.ValueOf(partial).Pointer()).Name()
|
2024-09-11 00:52:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetPartialPathWithQs(partial func(ctx *fiber.Ctx) *Partial, qs string) string {
|
2024-09-11 17:31:40 +00:00
|
|
|
return html.EscapeString(GetPartialPath(partial) + "?" + qs)
|
2024-09-11 00:52:18 +00:00
|
|
|
}
|