messaging.go

 1package validator
 2
 3import "bytes"
 4
 5// Given [ A, B, C ] return '"A", "B", or "C"'.
 6func QuotedOrList(items ...string) string {
 7	itemsQuoted := make([]string, len(items))
 8	for i, item := range items {
 9		itemsQuoted[i] = `"` + item + `"`
10	}
11	return OrList(itemsQuoted...)
12}
13
14// Given [ A, B, C ] return 'A, B, or C'.
15func OrList(items ...string) string {
16	var buf bytes.Buffer
17
18	if len(items) > 5 {
19		items = items[:5]
20	}
21	if len(items) == 2 {
22		buf.WriteString(items[0])
23		buf.WriteString(" or ")
24		buf.WriteString(items[1])
25		return buf.String()
26	}
27
28	for i, item := range items {
29		if i != 0 {
30			if i == len(items)-1 {
31				buf.WriteString(", or ")
32			} else {
33				buf.WriteString(", ")
34			}
35		}
36		buf.WriteString(item)
37	}
38	return buf.String()
39}