handle empty text and multi-line text
This commit is contained in:
parent
8711ec1245
commit
b2bded0d71
@ -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 {
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user