From 026ae9469a5247f4e6ac97a23cb54f4e0c5e3905 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Sat, 8 May 2021 21:44:36 +0200 Subject: [PATCH] Sort blogroll again --- blogroll.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/blogroll.go b/blogroll.go index 766b521..430dcc7 100644 --- a/blogroll.go +++ b/blogroll.go @@ -4,6 +4,8 @@ import ( "fmt" "io" "net/http" + "sort" + "strings" "time" "github.com/kaorimatz/go-opml" @@ -104,12 +106,33 @@ func getBlogrollOutlines(config *configBlogroll) ([]*opml.Outline, error) { if outline, ok := funk.Find(outlines, func(outline *opml.Outline) bool { return outline.Title == category || outline.Text == category }).(*opml.Outline); ok && outline != nil { + outline.Outlines = sortOutlines(outline.Outlines) filtered = append(filtered, outline) } } outlines = filtered + } else { + outlines = sortOutlines(outlines) } config.cachedOutlines = outlines config.lastCache = time.Now() return outlines, nil } + +func sortOutlines(outlines []*opml.Outline) []*opml.Outline { + sort.Slice(outlines, func(i, j int) bool { + name1 := outlines[i].Title + if name1 == "" { + name1 = outlines[i].Text + } + name2 := outlines[j].Title + if name2 == "" { + name2 = outlines[j].Text + } + return strings.ToLower(name1) < strings.ToLower(name2) + }) + for _, outline := range outlines { + outline.Outlines = sortOutlines(outline.Outlines) + } + return outlines +}