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"
"os"
"path"
"strings"
"sync"
"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 {
if item.Text == text {
return fmt.Errorf("dupe:%s", text)
continue outer
}
}
g.Items = append(g.Items, Entry{text, false})
}
reqs <- g
return nil
}
func (g *GList) Toggle(text string) error {

View File

@ -1,6 +1,7 @@
package glist
import (
"fmt"
"sync"
"testing"
)
@ -13,8 +14,23 @@ func TestGList(t *testing.T) {
if err != nil {
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) {
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) {
if text == "" {
return
}
gl.Mutex.Lock()
defer gl.Mutex.Unlock()
gl.Add(text)