Skip to content

Commit 80decd8

Browse files
Support bool in ValueTo (#1117)
This adds support for boolean receivers in `ValueTo`. This way, we can easily support an `input` with a type of `checkbox` using the same code structure as everything else.
1 parent daf9a51 commit 80decd8

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

pkg/app/strings.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ func stringTo(s string, v any) error {
8686
f, _ := strconv.ParseFloat(s, 32)
8787
val.SetFloat(f)
8888

89+
case reflect.Bool:
90+
b, _ := strconv.ParseBool(s)
91+
val.SetBool(b)
92+
8993
default:
9094
return errors.New("string cannot be converted to receiver type").
9195
WithTag("string", s).

pkg/app/strings_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,33 @@ func TestStringToString(t *testing.T) {
1212
require.Equal(t, "hello", s)
1313
}
1414

15+
func TestStringToBool(t *testing.T) {
16+
var b bool
17+
err := stringTo("true", &b)
18+
require.NoError(t, err)
19+
require.Equal(t, true, b)
20+
21+
err = stringTo("false", &b)
22+
require.NoError(t, err)
23+
require.Equal(t, false, b)
24+
25+
err = stringTo("1", &b)
26+
require.NoError(t, err)
27+
require.Equal(t, true, b)
28+
29+
err = stringTo("0", &b)
30+
require.NoError(t, err)
31+
require.Equal(t, false, b)
32+
33+
err = stringTo("", &b)
34+
require.NoError(t, err)
35+
require.Equal(t, false, b)
36+
37+
err = stringTo("bogus", &b)
38+
require.NoError(t, err)
39+
require.Equal(t, false, b)
40+
}
41+
1542
func TestStringToInt(t *testing.T) {
1643
var i int
1744
var i8 int8

0 commit comments

Comments
 (0)