Skip to content

Commit

Permalink
Merge pull request #2 from rrrkren/eric/blockstring
Browse files Browse the repository at this point in the history
block string
  • Loading branch information
rrrkren authored Mar 3, 2020
2 parents a992dca + a8e4df7 commit 93968de
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
18 changes: 18 additions & 0 deletions argument.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ func ArgumentString(name string, value string) Argument {
return Argument{name, argString(value)}
}

func ArgumentBlockString(name string, value string) Argument {
return Argument{name, argBlockString(value)}
}

func ArgumentEnum(name string, value string) Argument {
return Argument{name, argEnum(value)}
}
Expand Down Expand Up @@ -130,6 +134,20 @@ func (v argString) stringChan() <-chan string {
return tokenChan
}


// argBlockString represents a block string value.
type argBlockString string

func (v argBlockString) stringChan() <- chan string {
tokenChan := make(chan string)
go func() {
tokenChan <- fmt.Sprintf(`"""%s"""`, v)
close(tokenChan)
}()
return tokenChan
}


// argEnum represents a enum value.
type argEnum string

Expand Down
17 changes: 17 additions & 0 deletions argument_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@ func TestArgumentString(t *testing.T) {
assert.Equal(t, Argument{"blocked", argString("")}, a)
}

func TestArgumentBlockString(t *testing.T) {
a := ArgumentBlockString("blocked", `a`)
assert.Equal(t, Argument{"blocked", argBlockString("a")}, a)
a = ArgumentBlockString("blocked", ``)
assert.Equal(t, Argument{"blocked", argBlockString("")}, a)
}

func TestArgumentStringSlice(t *testing.T) {
a := ArgumentStringSlice("blocked", "a", "b", "", " ", "d")
assert.Equal(t, Argument{"blocked", argStringSlice([]string{"a", "b", "", " ", "d"})}, a)
Expand Down Expand Up @@ -87,6 +94,16 @@ func Test_argEnum(t *testing.T) {
assert.Equal(t, 1, i)
}

func Test_argBlockString(t *testing.T) {
b := argBlockString(`blockstring`)
i := 0
for str := range b.stringChan() {
assert.Equal(t, "\"\"\"blockstring\"\"\"", str)
i++
}
assert.Equal(t, 1, i)
}

func Test_argEnumSlice(t *testing.T) {
es := argEnumSlice([]string{"ENUM_VALUE", "ENUM_SLICE"})
c := es.stringChan()
Expand Down

0 comments on commit 93968de

Please sign in to comment.