Ver código fonte

Better convention for safe template types

Svilen Markov 7 meses atrás
pai
commit
ae1fb05607

+ 0 - 5
internal/glance/config-fields.go

@@ -2,7 +2,6 @@ package glance
 
 import (
 	"fmt"
-	"html/template"
 	"os"
 	"regexp"
 	"strconv"
@@ -30,10 +29,6 @@ func (c *hslColorField) String() string {
 	return fmt.Sprintf("hsl(%d, %d%%, %d%%)", c.Hue, c.Saturation, c.Lightness)
 }
 
-func (c *hslColorField) AsCSSValue() template.CSS {
-	return template.CSS(c.String())
-}
-
 func (c *hslColorField) UnmarshalYAML(node *yaml.Node) error {
 	var value string
 

+ 6 - 0
internal/glance/templates.go

@@ -16,6 +16,12 @@ var intl = message.NewPrinter(language.English)
 var globalTemplateFunctions = template.FuncMap{
 	"formatViewerCount": formatViewerCount,
 	"formatNumber":      intl.Sprint,
+	"safeCSS": func(str string) template.CSS {
+		return template.CSS(str)
+	},
+	"safeURL": func(str string) template.URL {
+		return template.URL(str)
+	},
 	"absInt": func(i int) int {
 		return int(math.Abs(float64(i)))
 	},

+ 1 - 1
internal/glance/templates/bookmarks.html

@@ -3,7 +3,7 @@
 {{ define "widget-content" }}
 <div class="dynamic-columns list-gap-24 list-with-separator">
     {{ range .Groups }}
-    <div class="bookmarks-group"{{ if .Color }} style="--bookmarks-group-color: {{ .Color.AsCSSValue }}"{{ end }}>
+    <div class="bookmarks-group"{{ if .Color }} style="--bookmarks-group-color: {{ .Color.String | safeCSS }}"{{ end }}>
         {{ if ne .Title "" }}<div class="bookmarks-group-title size-h3 margin-bottom-3">{{ .Title }}</div>{{ end }}
         <ul class="list list-gap-2">
         {{ range .Links }}

+ 3 - 3
internal/glance/templates/theme-style.gotmpl

@@ -7,8 +7,8 @@
     {{ end }}
     {{ if ne 0.0 .ContrastMultiplier }}--cm: {{ .ContrastMultiplier }};{{ end }}
     {{ if ne 0.0 .TextSaturationMultiplier }}--tsm: {{ .TextSaturationMultiplier }};{{ end }}
-    {{ if .PrimaryColor }}--color-primary: {{ .PrimaryColor.AsCSSValue }};{{ end }}
-    {{ if .PositiveColor }}--color-positive: {{ .PositiveColor.AsCSSValue }};{{ end }}
-    {{ if .NegativeColor }}--color-negative: {{ .NegativeColor.AsCSSValue }};{{ end }}
+    {{ if .PrimaryColor }}--color-primary: {{ .PrimaryColor.String | safeCSS }};{{ end }}
+    {{ if .PositiveColor }}--color-positive: {{ .PositiveColor.String | safeCSS }};{{ end }}
+    {{ if .NegativeColor }}--color-negative: {{ .NegativeColor.String | safeCSS }};{{ end }}
 }
 </style>