all repos — searchix @ c0fbf11f843af84e8891a708c4d217dd6c523473

Search engine for NixOS, nix-darwin, home-manager and NUR users

feat: render markdown examples

Alan Pearce
commit

c0fbf11f843af84e8891a708c4d217dd6c523473

parent

7d08b696e9ab6de61c53a5dc9153595a5a8a6d98

1 file changed, 17 insertions(+), 2 deletions(-)

changed files
M internal/server/server.gointernal/server/server.go
@@ -4,6 +4,7 @@ import (
"context" "encoding/json" "fmt" + "html" "html/template" "io" "log"
@@ -25,6 +26,8 @@ sentryhttp "github.com/getsentry/sentry-go/http"
"github.com/osdevisnot/sorvor/pkg/livereload" "github.com/pkg/errors" "github.com/shengyanli1982/law" + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" ) var config *cfg.Config
@@ -74,9 +77,20 @@ config.CSP.ScriptSrc = slices.Insert(config.CSP.ScriptSrc, 0, "'unsafe-inline'")
config.CSP.ConnectSrc = slices.Insert(config.CSP.ConnectSrc, 0, "'self'") } +var md = goldmark.New( + goldmark.WithExtensions(extension.NewLinkify()), +) var templateFuncs = template.FuncMap{ - "HTML": func(input string) template.HTML { - return template.HTML(input) // #nosec G203 + "markdown": func(input options.Markdown) template.HTML { + var out strings.Builder + err := md.Convert([]byte(input), &out) + if err != nil { + slog.Warn(fmt.Sprintf("markdown conversion failed: %v", err)) + + return template.HTML(html.EscapeString(err.Error())) // #nosec G203 -- duh? + } + + return template.HTML(out.String()) // #nosec G203 }, }
@@ -177,6 +191,7 @@ err = json.Unmarshal(jsonFile, &nixosOptions)
if err != nil { slog.Error(fmt.Sprintf("error parsing json file: %v", err)) } + mux.HandleFunc("/options/results", func(w http.ResponseWriter, r *http.Request) { tdata := OptionResultData{ TemplateData: indexData,