2023-11-07 21:10:27 +00:00
|
|
|
{% import (
|
|
|
|
"golang.org/x/text/language"
|
|
|
|
"golang.org/x/text/message"
|
2023-11-07 22:56:42 +00:00
|
|
|
|
|
|
|
"source.toby3d.me/toby3d/home/internal/domain"
|
2023-11-07 21:10:27 +00:00
|
|
|
) %}
|
|
|
|
|
|
|
|
{% interface Pager {
|
|
|
|
Body()
|
|
|
|
T(format message.Reference, v ...any)
|
|
|
|
Title()
|
2023-11-07 21:16:12 +00:00
|
|
|
Lang()
|
2023-11-12 23:19:23 +00:00
|
|
|
Dir()
|
2023-11-07 21:10:27 +00:00
|
|
|
} %}
|
|
|
|
|
|
|
|
{% code
|
|
|
|
type BaseOf struct {
|
|
|
|
printer *message.Printer
|
2023-11-08 01:06:18 +00:00
|
|
|
site *domain.Site
|
2023-11-07 21:10:27 +00:00
|
|
|
}
|
|
|
|
|
2023-11-08 01:06:18 +00:00
|
|
|
func NewBaseOf(site *domain.Site) BaseOf {
|
2023-11-07 21:10:27 +00:00
|
|
|
return BaseOf{
|
2023-11-07 22:56:42 +00:00
|
|
|
site: site,
|
2023-11-12 23:19:23 +00:00
|
|
|
printer: message.NewPrinter(language.Make(site.Language.Code())),
|
2023-11-07 21:10:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
%}
|
|
|
|
|
|
|
|
{% stripspace %}
|
|
|
|
{% func (b BaseOf) Title() %}
|
2023-11-07 22:56:42 +00:00
|
|
|
{%s b.site.Title %}
|
2023-11-07 21:10:27 +00:00
|
|
|
{% endfunc %}
|
|
|
|
|
2023-11-08 01:10:41 +00:00
|
|
|
{% func (b BaseOf) T(key message.Reference, a ...any) %}
|
|
|
|
{%s b.printer.Sprintf(key, a...) %}
|
2023-11-07 21:10:27 +00:00
|
|
|
{% endfunc %}
|
|
|
|
|
|
|
|
{% func (b BaseOf) Body() %}{% endfunc %}
|
|
|
|
|
2023-11-07 21:16:12 +00:00
|
|
|
{% func (b BaseOf) Lang() %}
|
2023-11-12 23:19:23 +00:00
|
|
|
{%s b.site.Language.Lang() %}
|
|
|
|
{% endfunc %}
|
|
|
|
|
|
|
|
{% func (b BaseOf) Dir() %}
|
2024-02-15 05:44:45 +00:00
|
|
|
{%s b.site.Language.Dir().String() %}
|
2023-11-07 21:16:12 +00:00
|
|
|
{% endfunc %}
|
|
|
|
|
2023-11-07 21:10:27 +00:00
|
|
|
{% func Template(p Pager) %}
|
|
|
|
<!DOCTYPE html>
|
2023-11-12 23:19:23 +00:00
|
|
|
<html lang="{%= p.Lang() %}" dir="{%= p.Dir() %}">
|
2023-11-07 21:10:27 +00:00
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
|
|
|
<title>{%= p.Title() %}</title>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
{%= p.Body() %}
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
{% endfunc %}
|
|
|
|
{% endstripspace %}
|