Escape Markdown table cell values in compliance page template

Pipe characters and newlines in dynamic values break Markdown table
structure. Add a cell template function that escapes these characters.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-03-19 22:12:37 +01:00
parent f11eae6b82
commit 1879a1f77c
2 changed files with 17 additions and 6 deletions

View File

@@ -12,29 +12,29 @@
| Title | Type |
|-------|------|
{{ range .Documents }}| {{ .Title }} | {{ .Type }} |
{{ range .Documents }}| {{ cell .Title }} | {{ cell .Type }} |
{{ end }}{{ end }}{{ if .Audits }}
## Audits
| Name | Framework | Valid From | Valid Until |
|------|-----------|------------|-------------|
{{ range .Audits }}| {{ .Name }} | {{ .Framework }} | {{ .ValidFrom }} | {{ .ValidUntil }} |
{{ range .Audits }}| {{ cell .Name }} | {{ cell .Framework }} | {{ .ValidFrom }} | {{ .ValidUntil }} |
{{ end }}{{ end }}{{ if .Vendors }}
## Subprocessors
| Name | Category | Countries | Website |
|------|----------|-----------|---------|
{{ range .Vendors }}| {{ .Name }} | {{ .Category }} | {{ .Countries }} | {{ .Website }} |
{{ range .Vendors }}| {{ cell .Name }} | {{ cell .Category }} | {{ cell .Countries }} | {{ cell .Website }} |
{{ end }}{{ end }}{{ if .References }}
## References
| Name | Description | Website |
|------|-------------|---------|
{{ range .References }}| {{ .Name }} | {{ .Description }} | {{ .Website }} |
{{ range .References }}| {{ cell .Name }} | {{ cell .Description }} | {{ cell .Website }} |
{{ end }}{{ end }}{{ if .ExternalLinks }}
## External Links
| Name | URL |
|------|-----|
{{ range .ExternalLinks }}| {{ .Name }} | {{ .URL }} |
{{ range .ExternalLinks }}| {{ cell .Name }} | {{ cell .URL }} |
{{ end }}{{ end }}

View File

@@ -31,7 +31,18 @@ import (
//go:embed compliance.md.tmpl
var complianceTmplContent string
var complianceTmpl = template.Must(template.New("compliance").Parse(complianceTmplContent))
var complianceTmpl = template.Must(
template.New("compliance").
Funcs(template.FuncMap{
"cell": func(s string) string {
s = strings.ReplaceAll(s, `|`, `\|`)
s = strings.ReplaceAll(s, "\n", " ")
s = strings.ReplaceAll(s, "\r", "")
return s
},
}).
Parse(complianceTmplContent),
)
type (
compliancePageData struct {