From d1a59fce5f7d09fd686beafdb860b8140a0c9027 Mon Sep 17 00:00:00 2001 From: "dzapata@netflix.com" Date: Wed, 24 Feb 2021 14:10:20 -0800 Subject: [PATCH 1/2] add supoport for enums --- argument.go | 16 ++++++++++++++++ argument_test.go | 7 +++++++ 2 files changed, 23 insertions(+) diff --git a/argument.go b/argument.go index 6e988fe..98cb31e 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 } +// argString 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 From 04191a57038c7e3aa85f5d3a7a907fcf2a8181b6 Mon Sep 17 00:00:00 2001 From: "dzapata@netflix.com" Date: Wed, 24 Feb 2021 14:11:51 -0800 Subject: [PATCH 2/2] fix comment --- argument.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argument.go b/argument.go index 98cb31e..5e77f6c 100644 --- a/argument.go +++ b/argument.go @@ -129,7 +129,7 @@ func (v argString) stringChan() <-chan string { return tokenChan } -// argString represents a enum value. +// argEnum represents a enum value. type argEnum string func (v argEnum) stringChan() <-chan string {