summaryrefslogtreecommitdiffstats
path: root/helpers/general.go
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/general.go')
-rw-r--r--helpers/general.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/helpers/general.go b/helpers/general.go
index 76275a6b9..5c3af9712 100644
--- a/helpers/general.go
+++ b/helpers/general.go
@@ -255,6 +255,27 @@ func SliceToLower(s []string) []string {
return l
}
+// StringSliceToList formats a string slice into a human-readable list.
+// It joins the elements of the slice s with commas, using an Oxford comma,
+// and precedes the final element with the conjunction c.
+func StringSliceToList(s []string, c string) string {
+ const defaultConjunction = "and"
+
+ if c == "" {
+ c = defaultConjunction
+ }
+ if len(s) == 0 {
+ return ""
+ }
+ if len(s) == 1 {
+ return s[0]
+ }
+ if len(s) == 2 {
+ return fmt.Sprintf("%s %s %s", s[0], c, s[1])
+ }
+ return fmt.Sprintf("%s, %s %s", strings.Join(s[:len(s)-1], ", "), c, s[len(s)-1])
+}
+
// IsWhitespace determines if the given rune is whitespace.
func IsWhitespace(r rune) bool {
return r == ' ' || r == '\t' || r == '\n' || r == '\r'