diff options
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 + }) +} |