@@ -40,102 +40,159 @@ func stringToSlice(input string) []string {
4040 return []string {input }
4141}
4242
43- func toBool (input string ) (bool , error ) {
43+ func toBool (input string ) (bool , bool ) {
4444 if len (input ) == 0 {
45- return false , nil
45+ return false , false
4646 }
47- return strconv .ParseBool (input )
47+ v , err := strconv .ParseBool (input )
48+ return v , err == nil
4849}
4950
50- func toBools (input []string ) ([]bool , error ) {
51- inputLen := len (input )
52-
53- output := make ([]bool , inputLen )
54- for i , l := 0 , inputLen ; i < l ; i ++ {
55- v , err := toBool (input [i ])
56- if err != nil {
57- return nil , err
51+ func toBools (input []string ) ([]bool , bool ) {
52+ l := len (input )
53+ output := make ([]bool , l )
54+ for i := 0 ; i < l ; i ++ {
55+ v , ok := toBool (input [i ])
56+ if ! ok {
57+ return nil , false
5858 }
5959 output [i ] = v
6060 }
6161
62- return output , nil
62+ return output , true
6363}
6464
65- func toInt (input string ) (int , error ) {
66- return strconv .Atoi (input )
65+ func toInt (input string ) (int , bool ) {
66+ v , err := strconv .Atoi (input )
67+ return v , err == nil
6768}
6869
69- func toInts (input []string ) ([]int , error ) {
70- inputLen := len (input )
71-
72- output := make ([]int , inputLen )
73- for i , l := 0 , inputLen ; i < l ; i ++ {
74- v , err := toInt (input [i ])
75- if err != nil {
76- return nil , err
70+ func toInts (input []string ) ([]int , bool ) {
71+ l := len (input )
72+ output := make ([]int , l )
73+ for i := 0 ; i < l ; i ++ {
74+ v , ok := toInt (input [i ])
75+ if ! ok {
76+ return nil , false
7777 }
7878 output [i ] = v
7979 }
8080
81- return output , nil
81+ return output , true
82+ }
83+
84+ func toUint (input string ) (uint , bool ) {
85+ v , err := strconv .ParseUint (input , 10 , 0 )
86+ return uint (v ), err == nil
8287}
8388
84- func toInt64 (input string ) (int64 , error ) {
85- return strconv .ParseInt (input , 10 , 64 )
89+ func toUints (input []string ) ([]uint , bool ) {
90+ l := len (input )
91+ output := make ([]uint , l )
92+ for i := 0 ; i < l ; i ++ {
93+ v , ok := toUint (input [i ])
94+ if ! ok {
95+ return nil , false
96+ }
97+ output [i ] = v
98+ }
99+
100+ return output , true
86101}
87102
88- func toInt64s (input []string ) ([]int64 , error ) {
89- inputLen := len (input )
103+ func toInt32 (input string ) (int32 , bool ) {
104+ v , err := strconv .ParseInt (input , 10 , 32 )
105+ return int32 (v ), err == nil
106+ }
90107
91- output := make ([]int64 , inputLen )
92- for i , l := 0 , inputLen ; i < l ; i ++ {
93- v , err := toInt64 (input [i ])
94- if err != nil {
95- return nil , err
108+ func toInt32s (input []string ) ([]int32 , bool ) {
109+ l := len (input )
110+ output := make ([]int32 , l )
111+ for i := 0 ; i < l ; i ++ {
112+ v , ok := toInt32 (input [i ])
113+ if ! ok {
114+ return nil , false
96115 }
97116 output [i ] = v
98117 }
99118
100- return output , nil
119+ return output , true
101120}
102121
103- func toUint64 (input string ) (uint64 , error ) {
104- return strconv .ParseUint (input , 10 , 64 )
122+ func toUint32 (input string ) (uint32 , bool ) {
123+ v , err := strconv .ParseUint (input , 10 , 32 )
124+ return uint32 (v ), err == nil
105125}
106126
107- func toUint64s (input []string ) ([]uint64 , error ) {
108- inputLen := len (input )
127+ func toUint32s (input []string ) ([]uint32 , bool ) {
128+ l := len (input )
129+ output := make ([]uint32 , l )
130+ for i := 0 ; i < l ; i ++ {
131+ v , ok := toUint32 (input [i ])
132+ if ! ok {
133+ return nil , false
134+ }
135+ output [i ] = v
136+ }
109137
110- output := make ([]uint64 , inputLen )
111- for i , l := 0 , inputLen ; i < l ; i ++ {
112- v , err := toUint64 (input [i ])
113- if err != nil {
114- return nil , err
138+ return output , true
139+ }
140+
141+ func toInt64 (input string ) (int64 , bool ) {
142+ v , err := strconv .ParseInt (input , 10 , 64 )
143+ return v , err == nil
144+ }
145+
146+ func toInt64s (input []string ) ([]int64 , bool ) {
147+ l := len (input )
148+ output := make ([]int64 , l )
149+ for i := 0 ; i < l ; i ++ {
150+ v , ok := toInt64 (input [i ])
151+ if ! ok {
152+ return nil , false
115153 }
116154 output [i ] = v
117155 }
118156
119- return output , nil
157+ return output , true
120158}
121159
122- func toFloat64 (input string ) (float64 , error ) {
123- return strconv .ParseFloat (input , 64 )
160+ func toUint64 (input string ) (uint64 , bool ) {
161+ v , err := strconv .ParseUint (input , 10 , 64 )
162+ return v , err == nil
124163}
125164
126- func toFloat64s (input []string ) ([]float64 , error ) {
127- inputLen := len (input )
165+ func toUint64s (input []string ) ([]uint64 , bool ) {
166+ l := len (input )
167+ output := make ([]uint64 , l )
168+ for i := 0 ; i < l ; i ++ {
169+ v , ok := toUint64 (input [i ])
170+ if ! ok {
171+ return nil , false
172+ }
173+ output [i ] = v
174+ }
175+
176+ return output , true
177+ }
178+
179+ func toFloat64 (input string ) (float64 , bool ) {
180+ v , err := strconv .ParseFloat (input , 64 )
181+ return v , err == nil
182+ }
128183
129- output := make ([]float64 , inputLen )
130- for i , l := 0 , inputLen ; i < l ; i ++ {
131- v , err := toFloat64 (input [i ])
132- if err != nil {
133- return nil , err
184+ func toFloat64s (input []string ) ([]float64 , bool ) {
185+ l := len (input )
186+ output := make ([]float64 , l )
187+ for i := 0 ; i < l ; i ++ {
188+ v , ok := toFloat64 (input [i ])
189+ if ! ok {
190+ return nil , false
134191 }
135192 output [i ] = v
136193 }
137194
138- return output , nil
195+ return output , true
139196}
140197
141198func contains (collection []string , find string ) bool {
0 commit comments