From 090d2fae173d241ee93966e6c6aa95e7d0ec9e86 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 6 Jul 2019 18:34:01 +0200 Subject: simplify --- internal/re/re.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'internal/re/re.go') diff --git a/internal/re/re.go b/internal/re/re.go index b235282..f7e9543 100644 --- a/internal/re/re.go +++ b/internal/re/re.go @@ -2,12 +2,40 @@ package re import ( "errors" + "fmt" + "io" "regexp" "strings" + + lru "github.com/hashicorp/golang-lru" ) var errNotRE = errors.New("not re") +type RE struct { + last *lru.Cache + w io.Writer +} + +func NewRE(w io.Writer) *RE { + last, _ := lru.New(100) + return &RE{last: last, w: w} +} + +func (r *RE) Replace(text, nick string) { + defer r.last.Add(nick, text) + if !strings.HasPrefix(text, "s") { + return + } + if tofix, ok := r.last.Get(nick); ok { + global := strings.HasSuffix(text, "g") + fixed, err := Replace(tofix.(string), text[1:], global) + if err == nil && fixed != tofix { + fmt.Fprintf(r.w, "%v meant to say: %s", nick, fixed) + } + } +} + func Replace(s, r string, global bool) (string, error) { // min: at least two separators if len(r) < 2 { -- cgit v1.2.3