From 692f378eab3fe0fad802609e102da70872b85d7c Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Mon, 9 Dec 2024 16:59:39 +0100 Subject: [PATCH] feat(templater): Implement unit formats --- services/templater.go | 13 +++++++++++++ templates/certificate/de.html | 10 +++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/services/templater.go b/services/templater.go index a51dabe..8feefec 100644 --- a/services/templater.go +++ b/services/templater.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/base64" "errors" + "fmt" "html/template" "image/png" @@ -89,10 +90,22 @@ func (t *DefaultTemplater) SelectSponsorImage(id int) (string, error) { return templates.GetImage(sponsors[id%len(sponsors)]), nil } +func FormatUnit(unit string, amount int) (string, error) { + switch unit { + case "kilometer": + return fmt.Sprintf("%.3f", float64(amount)/1000), nil + case "euro": + return fmt.Sprintf("%.2f", float64(amount)/100), nil + default: + return "", errors.New("unknown unit") + } +} + func (t *DefaultTemplater) StringToTemplate(templateString string) (*template.Template, error) { return template.New("template").Funcs(template.FuncMap{ "barcode": t.GenerateBarcode, "sponsorLogo": t.SelectSponsorImage, + "formatUnit": FormatUnit, }).Parse(templateString) } diff --git a/templates/certificate/de.html b/templates/certificate/de.html index 6a59f80..361b1a0 100644 --- a/templates/certificate/de.html +++ b/templates/certificate/de.html @@ -56,7 +56,7 @@ {{ .MiddleName }} {{ .LastName }}

hat beim {{ $.EventName }}

-

{{unitFormat "kilometer" .Distance}}km

+

{{formatUnit "kilometer" .Distance}}km

für den guten Zweck zurückgelegt