diff --git a/argument.go b/argument.go index 6e988fe..5e77f6c 100644 --- a/argument.go +++ b/argument.go @@ -60,6 +60,10 @@ func ArgumentString(name string, value string) Argument { return Argument{name, argString(value)} } +func ArgumentEnum(name string, value string) Argument { + return Argument{name, argEnum(value)} +} + func ArgumentBoolSlice(name string, values ...bool) Argument { return Argument{name, argBoolSlice(values)} } @@ -125,6 +129,18 @@ func (v argString) stringChan() <-chan string { return tokenChan } +// argEnum represents a enum value. +type argEnum string + +func (v argEnum) stringChan() <-chan string { + tokenChan := make(chan string) + go func() { + tokenChan <- fmt.Sprintf(`%s`, v) + close(tokenChan) + }() + return tokenChan +} + ////////////////////////////////// // Primitive List Wrapper Types // ////////////////////////////////// diff --git a/argument_test.go b/argument_test.go index 0471c37..4c8d04f 100644 --- a/argument_test.go +++ b/argument_test.go @@ -66,6 +66,13 @@ func TestArgumentStringSlice(t *testing.T) { assert.Equal(t, Argument{"blocked", argStringSlice(nil)}, a) } +func TestArgumentEnum(t *testing.T) { + a := ArgumentEnum("blocked", "a") + assert.Equal(t, Argument{"blocked", argEnum("a")}, a) + a = ArgumentEnum("blocked", "") + assert.Equal(t, Argument{"blocked", argEnum("")}, a) +} + func Test_argBool(t *testing.T) { b := argBool(true) i := 0