From cc5ae1a0a1b1abfb147b74e6583f15a585566cf0 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 5 Apr 2025 23:25:06 +0800 Subject: Move trivial template functions into misc --- http_template_funcs.go | 48 ------------------------------------------------ internal/misc/trivial.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ resources.go | 10 +++++----- 3 files changed, 53 insertions(+), 53 deletions(-) delete mode 100644 http_template_funcs.go create mode 100644 internal/misc/trivial.go diff --git a/http_template_funcs.go b/http_template_funcs.go deleted file mode 100644 index 11e4fad..0000000 --- a/http_template_funcs.go +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu - -package forge - -import ( - "net/url" - "strings" -) - -// These are all trivial functions that are intended to be used in HTML -// templates. - -// FirstLine returns the first line of a string. -func FirstLine(s string) string { - before, _, _ := strings.Cut(s, "\n") - return before -} - -// PathEscape escapes the input as an URL path segment. -func PathEscape(s string) string { - return url.PathEscape(s) -} - -// QueryEscape escapes the input as an URL query segment. -func QueryEscape(s string) string { - return url.QueryEscape(s) -} - -// Dereference dereferences a pointer. -func Dereference[T any](p *T) T { - return *p -} - -// DereferenceOrZero dereferences a pointer. If the pointer is nil, the zero -// value of its associated type is returned instead. -func DereferenceOrZero[T any](p *T) T { - if p != nil { - return *p - } - var z T - return z -} - -// Minus subtracts two numbers. -func Minus(a, b int) int { - return a - b -} diff --git a/internal/misc/trivial.go b/internal/misc/trivial.go new file mode 100644 index 0000000..e59c17e --- /dev/null +++ b/internal/misc/trivial.go @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: AGPL-3.0-only +// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu + +package misc + +import ( + "net/url" + "strings" +) + +// These are all trivial functions that are intended to be used in HTML +// templates. + +// FirstLine returns the first line of a string. +func FirstLine(s string) string { + before, _, _ := strings.Cut(s, "\n") + return before +} + +// PathEscape escapes the input as an URL path segment. +func PathEscape(s string) string { + return url.PathEscape(s) +} + +// QueryEscape escapes the input as an URL query segment. +func QueryEscape(s string) string { + return url.QueryEscape(s) +} + +// Dereference dereferences a pointer. +func Dereference[T any](p *T) T { + return *p +} + +// DereferenceOrZero dereferences a pointer. If the pointer is nil, the zero +// value of its associated type is returned instead. +func DereferenceOrZero[T any](p *T) T { + if p != nil { + return *p + } + var z T + return z +} + +// Minus subtracts two numbers. +func Minus(a, b int) int { + return a - b +} diff --git a/resources.go b/resources.go index 637b8ed..e2168a3 100644 --- a/resources.go +++ b/resources.go @@ -32,11 +32,11 @@ func loadTemplates() (err error) { minifier.Add("text/html", &minifierOptions) templates = template.New("templates").Funcs(template.FuncMap{ - "first_line": FirstLine, - "path_escape": PathEscape, - "query_escape": QueryEscape, - "dereference_error": DereferenceOrZero[error], - "minus": Minus, + "first_line": misc.FirstLine, + "path_escape": misc.PathEscape, + "query_escape": misc.QueryEscape, + "dereference_error": misc.DereferenceOrZero[error], + "minus": misc.Minus, }) err = fs.WalkDir(embeddedResourcesFS, "templates", func(path string, d fs.DirEntry, err error) error { -- cgit v1.2.3