62 lines
1.1 KiB
Plaintext
62 lines
1.1 KiB
Plaintext
{% import (
|
|
"golang.org/x/text/language"
|
|
"golang.org/x/text/message"
|
|
|
|
"source.toby3d.me/toby3d/home/internal/domain"
|
|
) %}
|
|
|
|
{% interface Pager {
|
|
Body()
|
|
T(format message.Reference, v ...any)
|
|
Title()
|
|
Lang()
|
|
} %}
|
|
|
|
{% code
|
|
type BaseOf struct {
|
|
printer *message.Printer
|
|
site *domain.Site
|
|
}
|
|
|
|
func NewBaseOf(site *domain.Site) BaseOf {
|
|
return BaseOf{
|
|
site: site,
|
|
printer: message.NewPrinter(site.Language),
|
|
}
|
|
}
|
|
%}
|
|
|
|
{% stripspace %}
|
|
{% func (b BaseOf) Title() %}
|
|
{%s b.site.Title %}
|
|
{% endfunc %}
|
|
|
|
{% func (b BaseOf) T(key message.Reference, a ...any) %}
|
|
{%s b.printer.Sprintf(key, a...) %}
|
|
{% endfunc %}
|
|
|
|
{% func (b BaseOf) Body() %}{% endfunc %}
|
|
|
|
{% func (b BaseOf) Lang() %}
|
|
{% if b.site.Language != language.Und %}
|
|
{%s b.site.Language.String() %}
|
|
{% endif %}
|
|
{% endfunc %}
|
|
|
|
{% func Template(p Pager) %}
|
|
<!DOCTYPE html>
|
|
<html lang="{%= p.Lang() %}">
|
|
<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 %}
|