handle empty text and multi-line text

This commit is contained in:
Balakrishnan Balasubramanian 2022-12-26 21:48:01 -05:00
parent 8711ec1245
commit b2bded0d71
3 changed files with 29 additions and 7 deletions

View File

@ -6,6 +6,7 @@ import (
"log" "log"
"os" "os"
"path" "path"
"strings"
"sync" "sync"
"time" "time"
) )
@ -69,15 +70,17 @@ func (g *GList) persist() {
} }
} }
func (g *GList) Add(text string) error { func (g *GList) Add(t string) {
outer:
for _, text := range strings.Split(t, "\n") {
for _, item := range g.Items { for _, item := range g.Items {
if item.Text == text { if item.Text == text {
return fmt.Errorf("dupe:%s", text) continue outer
} }
} }
g.Items = append(g.Items, Entry{text, false}) g.Items = append(g.Items, Entry{text, false})
}
reqs <- g reqs <- g
return nil
} }
func (g *GList) Toggle(text string) error { func (g *GList) Toggle(text string) error {

View File

@ -1,6 +1,7 @@
package glist package glist
import ( import (
"fmt"
"sync" "sync"
"testing" "testing"
) )
@ -13,8 +14,23 @@ func TestGList(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
expected := `{"chat_id":4342,"text":"ok","reply_markup":{"inline_keyboard":[[{"text":"✓ foo","callback_data":"foo"}]]}}`
expected := `{"chat_id":4342,"text":"List:","reply_markup":{"inline_keyboard":[[{"text":"✓ foo","callback_data":"foo"}],[{"text":"clear checked","callback_data":"clear"}]]}}`
if expected != string(data) { if expected != string(data) {
t.Fatalf("expected: %s\n got:%s\n", expected, string(data)) t.Fatalf("expected: %s\n got:%s\n", expected, string(data))
} }
} }
func TestSplit(t *testing.T) {
g := GList{}
reqs = make(chan *GList, 50)
g.Add("foo")
g.Add("bar\nfoo\nblah")
g.Add("foo")
g.Add("lskfj")
expected := `{0 {0 0} 0 <nil> [{foo false} {bar false} {blah false} {lskfj false}]}`
actual := fmt.Sprintf("%v", g)
if expected != actual {
t.Fatalf("expected: %s\n got:%s\n", expected, actual)
}
}

View File

@ -118,6 +118,9 @@ func main() {
} }
func handleTextAdded(gl *glist.GList, text string) { func handleTextAdded(gl *glist.GList, text string) {
if text == "" {
return
}
gl.Mutex.Lock() gl.Mutex.Lock()
defer gl.Mutex.Unlock() defer gl.Mutex.Unlock()
gl.Add(text) gl.Add(text)