@@ -40,102 +40,151 @@ 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 ) (output []bool , ok bool ) {
52+ l := len (input )
53+ values := make ([]bool , l )
54+ for i := 0 ; i < l ; i ++ {
55+ values [i ], ok = toBool (input [i ])
56+ if ! ok {
57+ return
5858 }
59- output [i ] = v
6059 }
6160
62- return output , nil
61+ return values , true
6362}
6463
65- func toInt (input string ) (int , error ) {
66- return strconv .Atoi (input )
64+ func toInt (input string ) (int , bool ) {
65+ v , err := strconv .Atoi (input )
66+ return v , err == nil
6767}
6868
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
69+ func toInts (input []string ) (output []int , ok bool ) {
70+ l := len (input )
71+ values := make ([]int , l )
72+ for i := 0 ; i < l ; i ++ {
73+ values [i ], ok = toInt (input [i ])
74+ if ! ok {
75+ return
7776 }
78- output [i ] = v
7977 }
8078
81- return output , nil
79+ return values , true
8280}
8381
84- func toInt64 (input string ) (int64 , error ) {
85- return strconv .ParseInt (input , 10 , 64 )
82+ func toUint (input string ) (uint , bool ) {
83+ v , err := strconv .ParseUint (input , 10 , 0 )
84+ return uint (v ), err == nil
85+ }
86+
87+ func toUints (input []string ) (output []uint , ok bool ) {
88+ l := len (input )
89+ values := make ([]uint , l )
90+ for i := 0 ; i < l ; i ++ {
91+ values [i ], ok = toUint (input [i ])
92+ if ! ok {
93+ return
94+ }
95+ }
96+
97+ return values , true
8698}
8799
88- func toInt64s (input []string ) ([]int64 , error ) {
89- inputLen := len (input )
100+ func toInt32 (input string ) (int32 , bool ) {
101+ v , err := strconv .ParseInt (input , 10 , 32 )
102+ return int32 (v ), err == nil
103+ }
90104
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
105+ func toInt32s (input []string ) (output []int32 , ok bool ) {
106+ l := len (input )
107+ values := make ([]int32 , l )
108+ for i := 0 ; i < l ; i ++ {
109+ values [i ], ok = toInt32 (input [i ])
110+ if ! ok {
111+ return
96112 }
97- output [i ] = v
98113 }
99114
100- return output , nil
115+ return values , true
116+ }
117+
118+ func toUint32 (input string ) (uint32 , bool ) {
119+ v , err := strconv .ParseUint (input , 10 , 32 )
120+ return uint32 (v ), err == nil
101121}
102122
103- func toUint64 (input string ) (uint64 , error ) {
104- return strconv .ParseUint (input , 10 , 64 )
123+ func toUint32s (input []string ) (output []uint32 , ok bool ) {
124+ l := len (input )
125+ values := make ([]uint32 , l )
126+ for i := 0 ; i < l ; i ++ {
127+ values [i ], ok = toUint32 (input [i ])
128+ if ! ok {
129+ return
130+ }
131+ }
132+
133+ return values , true
105134}
106135
107- func toUint64s (input []string ) ([]uint64 , error ) {
108- inputLen := len (input )
136+ func toInt64 (input string ) (int64 , bool ) {
137+ v , err := strconv .ParseInt (input , 10 , 64 )
138+ return v , err == nil
139+ }
109140
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
141+ func toInt64s (input []string ) (output []int64 , ok bool ) {
142+ l := len (input )
143+ values := make ([]int64 , l )
144+ for i := 0 ; i < l ; i ++ {
145+ values [i ], ok = toInt64 (input [i ])
146+ if ! ok {
147+ return
115148 }
116- output [i ] = v
117149 }
118150
119- return output , nil
151+ return values , true
152+ }
153+
154+ func toUint64 (input string ) (uint64 , bool ) {
155+ v , err := strconv .ParseUint (input , 10 , 64 )
156+ return v , err == nil
120157}
121158
122- func toFloat64 (input string ) (float64 , error ) {
123- return strconv .ParseFloat (input , 64 )
159+ func toUint64s (input []string ) (output []uint64 , ok bool ) {
160+ l := len (input )
161+ values := make ([]uint64 , l )
162+ for i := 0 ; i < l ; i ++ {
163+ values [i ], ok = toUint64 (input [i ])
164+ if ! ok {
165+ return
166+ }
167+ }
168+
169+ return values , true
124170}
125171
126- func toFloat64s (input []string ) ([]float64 , error ) {
127- inputLen := len (input )
172+ func toFloat64 (input string ) (float64 , bool ) {
173+ v , err := strconv .ParseFloat (input , 64 )
174+ return v , err == nil
175+ }
128176
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
177+ func toFloat64s (input []string ) (output []float64 , ok bool ) {
178+ l := len (input )
179+ values := make ([]float64 , l )
180+ for i := 0 ; i < l ; i ++ {
181+ values [i ], ok = toFloat64 (input [i ])
182+ if ! ok {
183+ return
134184 }
135- output [i ] = v
136185 }
137186
138- return output , nil
187+ return values , true
139188}
140189
141190func contains (collection []string , find string ) bool {
0 commit comments