diff options
author | Alan Pearce | 2024-06-21 13:02:08 +0200 |
---|---|---|
committer | Alan Pearce | 2024-06-21 15:33:38 +0200 |
commit | fc5fd2edd9b8282497e33a18300eab694d8a89c6 (patch) | |
tree | 18af097c037ef781cc8f6148d7c1ba37e10877c1 /internal/components/markdown.templ | |
parent | cac323d9ae70f55a43fd99b73e60cf614be11797 (diff) | |
download | searchix-fc5fd2edd9b8282497e33a18300eab694d8a89c6.tar.lz searchix-fc5fd2edd9b8282497e33a18300eab694d8a89c6.tar.zst searchix-fc5fd2edd9b8282497e33a18300eab694d8a89c6.zip |
refactor: switch to templ for HTML templates
Diffstat (limited to 'internal/components/markdown.templ')
-rw-r--r-- | internal/components/markdown.templ | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/components/markdown.templ b/internal/components/markdown.templ new file mode 100644 index 0000000..2a8787d --- /dev/null +++ b/internal/components/markdown.templ @@ -0,0 +1,35 @@ +package components + +import ( + "regexp" + + "searchix/internal/nix" + + "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" + "context" + "io" +) + +var ( + md = goldmark.New( + goldmark.WithExtensions(extension.NewLinkify()), + ) + firstSentenceRegexp = regexp.MustCompile(`^.*?\.[[:space:]]`) +) + +func firstSentence[T ~string](text T) T { + if fs := firstSentenceRegexp.FindString(string(text)); fs != "" { + return T(fs) + } + + return text +} + +func markdown(text nix.Markdown) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, w io.Writer) error { + err := md.Convert([]byte(text), w) + + return err + }) +} |