some more bits of hfcs
Ted Unangst tedu@tedunangst.com
Fri, 04 Oct 2019 21:57:53 -0400
M
fun.go
→
fun.go
@@ -35,7 +35,6 @@
func reverbolate(userid int64, honks []*Honk) { filt := htfilter.New() filt.Imager = replaceimg - zilences := getfilters(userid, filtCollapse) for _, h := range honks { h.What += "ed" if h.What == "tonked" {@@ -76,7 +75,7 @@ if h.Precis != "" {
h.Open = "" } } else { - if badword := unsee(zilences, h); badword != "" { + if badword := unsee(userid, h); badword != "" { if h.Precis == "" { h.Precis = badword }
M
hfcs.go
→
hfcs.go
@@ -26,6 +26,7 @@ ID int64
Actor string IncludeAudience bool Text string + re_text *regexp.Regexp IsAnnounce bool Reject bool SkipMedia bool@@ -76,6 +77,13 @@ }
if err != nil { log.Printf("error scanning filter: %s", err) continue + } + if filt.Text != "" { + filt.re_text, err = regexp.Compile("\\b(?i:" + filt.Text + ")\\b") + if err != nil { + log.Printf("error compiling filter text: %s", err) + continue + } } filt.ID = filterid if filt.Reject {@@ -169,9 +177,15 @@ }
} if match && f.Text != "" { match = false - for _, d := range h.Donks { - if d.Desc == f.Text { - match = true + re := f.re_text + if re.MatchString(h.Noise) || re.MatchString(h.Precis) { + match = true + } + if !match { + for _, d := range h.Donks { + if re.MatchString(d.Desc) { + match = true + } } } }@@ -202,7 +216,13 @@ return false
} // todo -func unsee(filts []*Filter, h *Honk) string { +func unsee(userid int64, h *Honk) string { + filts := getfilters(userid, filtCollapse) + for _, f := range filts { + if matchfilter(h, f) { + return f.Text + } + } return "" }