Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions blog/blog.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func formatTags(tags string) string {
if len(badges) == 0 {
return ""
}
return strings.Join(badges, " ")
return strings.Join(badges, " · ")
}

// parseTags parses comma-separated tags, validates, and normalizes them
Expand Down Expand Up @@ -1453,9 +1453,14 @@ func PostHandler(w http.ResponseWriter, r *http.Request) {

tagsHtml := ""
if post.Tags != "" {
var tagSpans []string
for _, tag := range strings.Split(post.Tags, ",") {
tagsHtml += fmt.Sprintf(`<span class="category">%s</span> `, strings.TrimSpace(tag))
tag = strings.TrimSpace(tag)
if tag != "" {
tagSpans = append(tagSpans, fmt.Sprintf(`<span class="category">%s</span>`, tag))
}
}
tagsHtml = strings.Join(tagSpans, " · ")
}

// Add private badge if post is private
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func main() {
return &social.SeedData{
Title: d.Title,
Summary: summary,
Link: "/news",
Link: "/news/digest?date=" + d.ID,
}
}

Expand Down
32 changes: 28 additions & 4 deletions news/digest/digest.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,31 @@ func GetLatestDigest() *DigestEntry {
return digests[0]
}

// GetDigestByDate returns the digest for a specific date (YYYY-MM-DD), or nil.
func GetDigestByDate(date string) *DigestEntry {
digestMu.RLock()
defer digestMu.RUnlock()
for _, entry := range digests {
if entry.ID == date {
return entry
}
}
return nil
}

// Handler serves the daily digest page at /news/digest.
// Supports ?date=YYYY-MM-DD to fetch a specific day's digest.
func Handler(w http.ResponseWriter, r *http.Request) {
date := r.URL.Query().Get("date")

var d *DigestEntry
if date != "" {
d = GetDigestByDate(date)
} else {
d = GetLatestDigest()
}

if app.WantsJSON(r) {
d := GetLatestDigest()
if d == nil {
app.RespondJSON(w, map[string]any{"digest": nil})
return
Expand All @@ -132,12 +153,15 @@ func Handler(w http.ResponseWriter, r *http.Request) {
return
}

d := GetLatestDigest()
if d == nil {
msg := "No digest available yet. Check back soon."
if date != "" {
msg = fmt.Sprintf("No digest found for %s.", date)
}
app.Respond(w, r, app.Response{
Title: "Daily Digest",
Description: "No digest available yet",
HTML: `<p>No digest available yet. Check back soon.</p>`,
Description: "No digest available",
HTML: fmt.Sprintf(`<p>%s</p>`, msg),
})
return
}
Expand Down