all repos — searchix @ c3fa5a442ee81a4c2252736c4d4ef461c6b3af93

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

feat: Add basic page meta description https://codeberg.org/alinnow/searchix/pulls/15

Kaya
commit

c3fa5a442ee81a4c2252736c4d4ef461c6b3af93

parent

078020ea68fd850a3d1dcfcdfbcb2ba61312161b

1 file changed, 49 insertions(+), 0 deletions(-)

changed files
M internal/components/detail.gointernal/components/detail.go
@@ -1,6 +1,9 @@
package components import ( + "fmt" + "strings" + "alin.ovh/searchix/internal/index" "alin.ovh/searchix/internal/nix"
@@ -15,6 +18,52 @@ case nix.Package:
return PackageDetail(t) default: return nil + } +} + +const MaxDescriptionLength = 160 + +func TruncateWithEllipsis(text string, maxLength int) string { + if len(text) > maxLength { + if maxLength > 1 { + return text[:maxLength-1] + "…" + } + + return text + } + + return text +} + +func MetaDescription(thing index.Indexable) string { + switch t := thing.(type) { + case nix.Package: + desc := t.Attribute + if t.Version != "" { + desc += " " + t.Version + } + if t.Description != "" { + desc += " - " + t.Description + } + + desc = TruncateWithEllipsis(desc, MaxDescriptionLength) + + return desc + case nix.Option: + desc := t.Name + if t.Type != "" { + desc = fmt.Sprintf("%s - %s option", desc, t.Type) + } + plain := strings.TrimSpace(string(t.Description)) + if plain != "" { + desc += ". " + plain + } + + desc = TruncateWithEllipsis(desc, MaxDescriptionLength) + + return desc + default: + return "" } }