diff options
Diffstat (limited to '')
-rw-r--r-- | render/readme.go (renamed from readme_to_html.go) | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/readme_to_html.go b/render/readme.go index 6d3f6f3..1a153fb 100644 --- a/readme_to_html.go +++ b/render/readme.go @@ -1,7 +1,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu <https://runxiyu.org> -package main +package render import ( "bytes" @@ -13,33 +13,29 @@ import ( "github.com/niklasfasching/go-org/org" "github.com/yuin/goldmark" "github.com/yuin/goldmark/extension" + "go.lindenii.runxiyu.org/forge/misc" ) var markdownConverter = goldmark.New(goldmark.WithExtensions(extension.GFM)) -// escapeHTML just escapes a string and wraps it in [template.HTML]. -func escapeHTML(s string) template.HTML { - return template.HTML(html.EscapeString(s)) //#nosec G203 -} - // renderReadme renders and sanitizes README content from a byte slice and filename. -func renderReadme(data []byte, filename string) (string, template.HTML) { +func Readme(data []byte, filename string) (string, template.HTML) { switch strings.ToLower(filename) { case "readme": - return "README", template.HTML("<pre>" + html.EscapeString(bytesToString(data)) + "</pre>") //#nosec G203 + return "README", template.HTML("<pre>" + html.EscapeString(misc.BytesToString(data)) + "</pre>") //#nosec G203 case "readme.md": var buf bytes.Buffer if err := markdownConverter.Convert(data, &buf); err != nil { - return "Error fetching README", escapeHTML("Unable to render README: " + err.Error()) + return "Error fetching README", EscapeHTML("Unable to render README: " + err.Error()) } return "README.md", template.HTML(bluemonday.UGCPolicy().SanitizeBytes(buf.Bytes())) //#nosec G203 case "readme.org": - htmlStr, err := org.New().Parse(strings.NewReader(bytesToString(data)), filename).Write(org.NewHTMLWriter()) + htmlStr, err := org.New().Parse(strings.NewReader(misc.BytesToString(data)), filename).Write(org.NewHTMLWriter()) if err != nil { - return "Error fetching README", escapeHTML("Unable to render README: " + err.Error()) + return "Error fetching README", EscapeHTML("Unable to render README: " + err.Error()) } return "README.org", template.HTML(bluemonday.UGCPolicy().Sanitize(htmlStr)) //#nosec G203 default: - return filename, template.HTML("<pre>" + html.EscapeString(bytesToString(data)) + "</pre>") //#nosec G203 + return filename, template.HTML("<pre>" + html.EscapeString(misc.BytesToString(data)) + "</pre>") //#nosec G203 } } |