Przeglądaj źródła

Make use of go≥1.21 slices package instead of hand-rolled loops

This makes the code a tad smaller, moderner,
and maybe even marginally faster, yay!
jvoisin 2 lat temu
rodzic
commit
b48ad6dbfb

+ 7 - 14
internal/reader/processor/processor.go

@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"log/slog"
 	"regexp"
+	"slices"
 	"strconv"
 	"time"
 
@@ -115,13 +116,9 @@ func ProcessFeedEntries(store *storage.Storage, feed *model.Feed, user *model.Us
 
 func isBlockedEntry(feed *model.Feed, entry *model.Entry) bool {
 	if feed.BlocklistRules != "" {
-		var containsBlockedTag bool = false
-		for _, tag := range entry.Tags {
-			if matchField(feed.BlocklistRules, tag) {
-				containsBlockedTag = true
-				break
-			}
-		}
+		containsBlockedTag := slices.ContainsFunc(entry.Tags, func(tag string) bool {
+			return matchField(feed.BlocklistRules, tag)
+		})
 
 		if matchField(feed.BlocklistRules, entry.URL) || matchField(feed.BlocklistRules, entry.Title) || matchField(feed.BlocklistRules, entry.Author) || containsBlockedTag {
 			slog.Debug("Blocking entry based on rule",
@@ -140,13 +137,9 @@ func isBlockedEntry(feed *model.Feed, entry *model.Entry) bool {
 
 func isAllowedEntry(feed *model.Feed, entry *model.Entry) bool {
 	if feed.KeeplistRules != "" {
-		var containsAllowedTag bool = false
-		for _, tag := range entry.Tags {
-			if matchField(feed.KeeplistRules, tag) {
-				containsAllowedTag = true
-				break
-			}
-		}
+		containsAllowedTag := slices.ContainsFunc(entry.Tags, func(tag string) bool {
+			return matchField(feed.KeeplistRules, tag)
+		})
 
 		if matchField(feed.KeeplistRules, entry.URL) || matchField(feed.KeeplistRules, entry.Title) || matchField(feed.KeeplistRules, entry.Author) || containsAllowedTag {
 			slog.Debug("Allow entry based on rule",

+ 2 - 6
internal/template/functions.go

@@ -8,6 +8,7 @@ import (
 	"html/template"
 	"math"
 	"net/mail"
+	"slices"
 	"strings"
 	"time"
 
@@ -72,12 +73,7 @@ func (f *funcMap) Map() template.FuncMap {
 			return link
 		},
 		"mustBeProxyfied": func(mediaType string) bool {
-			for _, t := range config.Opts.ProxyMediaTypes() {
-				if t == mediaType {
-					return true
-				}
-			}
-			return false
+			return slices.Contains(config.Opts.ProxyMediaTypes(), mediaType)
 		},
 		"domain": func(websiteURL string) string {
 			return urllib.Domain(websiteURL)