@@ -200,158 +200,126 @@ func newBoolParser(v any) EnvParser {
200200// EnvParser interface for parsing environment variables.
201201type EnvParser interface {
202202 // ParseEnv parses environment variable by key and returns value.
203- ParseEnv (key string , defaltVal any , options Parameters ) any
203+ ParseEnv (key string , options Parameters ) ( any , error )
204204}
205205
206206// stringParser is a parser for string type.
207207type stringParser string
208208
209- func (s stringParser ) ParseEnv (key string , defaltVal any , _ Parameters ) any {
210- val := stringOrDefault (key , defaltVal .(string ))
211-
212- return val
209+ func (s stringParser ) ParseEnv (key string , _ Parameters ) (any , error ) {
210+ return getString (key )
213211}
214212
215213type stringSliceParser []string
216214
217- func (s stringSliceParser ) ParseEnv (key string , defaltVal any , options Parameters ) any {
215+ func (s stringSliceParser ) ParseEnv (key string , options Parameters ) ( any , error ) {
218216 sep := options .Separator
219217
220- val := stringSliceOrDefault (key , defaltVal .([]string ), sep )
221-
222- return val
218+ return getStringSlice (key , sep )
223219}
224220
225221type numberParser [T Number ] struct {}
226222
227- func (n numberParser [T ]) ParseEnv (key string , defaltVal any , _ Parameters ) any {
228- val := numberOrDefaultGen [T ](key , defaltVal .(T ))
229-
230- return val
223+ func (n numberParser [T ]) ParseEnv (key string , _ Parameters ) (any , error ) {
224+ return getNumberGen [T ](key )
231225}
232226
233227type numberSliceParser [S []T , T Number ] struct {}
234228
235- func (i numberSliceParser [S , T ]) ParseEnv (key string , defaltVal any , options Parameters ) any {
229+ func (i numberSliceParser [S , T ]) ParseEnv (key string , options Parameters ) ( any , error ) {
236230 sep := options .Separator
237231
238- val := numberSliceOrDefaultGen (key , defaltVal .(S ), sep )
239-
240- return val
232+ return getNumberSliceGen [S , T ](key , sep )
241233}
242234
243235type boolParser bool
244236
245- func (b boolParser ) ParseEnv (key string , defaltVal any , _ Parameters ) any {
246- val := boolOrDefault (key , defaltVal .(bool ))
247-
248- return val
237+ func (b boolParser ) ParseEnv (key string , _ Parameters ) (any , error ) {
238+ return getBool (key )
249239}
250240
251241type timeParser time.Time
252242
253- func (t timeParser ) ParseEnv (key string , defaltVal any , options Parameters ) any {
243+ func (t timeParser ) ParseEnv (key string , options Parameters ) ( any , error ) {
254244 layout := options .Layout
255245
256- val := timeOrDefault (key , defaltVal .(time.Time ), layout )
257-
258- return val
246+ return getTime (key , layout )
259247}
260248
261249type timeSliceParser []time.Time
262250
263- func (t timeSliceParser ) ParseEnv (key string , defaltVal any , options Parameters ) any {
251+ func (t timeSliceParser ) ParseEnv (key string , options Parameters ) ( any , error ) {
264252 layout := options .Layout
265253 sep := options .Separator
266254
267- val := timeSliceOrDefault (key , defaltVal .([]time.Time ), layout , sep )
268-
269- return val
255+ return getTimeSlice (key , layout , sep )
270256}
271257
272258type durationSliceParser []time.Duration
273259
274- func (t durationSliceParser ) ParseEnv (key string , defaltVal any , options Parameters ) any {
260+ func (t durationSliceParser ) ParseEnv (key string , options Parameters ) ( any , error ) {
275261 sep := options .Separator
276262
277- val := durationSliceOrDefault (key , defaltVal .([]time.Duration ), sep )
278-
279- return val
263+ return getDurationSlice (key , sep )
280264}
281265
282266type durationParser time.Duration
283267
284- func (d durationParser ) ParseEnv (key string , defaltVal any , _ Parameters ) any {
285- val := durationOrDefault (key , defaltVal .(time.Duration ))
286-
287- return val
268+ func (d durationParser ) ParseEnv (key string , _ Parameters ) (any , error ) {
269+ return getDuration (key )
288270}
289271
290272// stringSliceParser is a parser for []string
291273type urlParser url.URL
292274
293- func (t urlParser ) ParseEnv (key string , defaltVal any , _ Parameters ) any {
294- val := urlOrDefault (key , defaltVal .(url.URL ))
295-
296- return val
275+ func (t urlParser ) ParseEnv (key string , _ Parameters ) (any , error ) {
276+ return getURL (key )
297277}
298278
299279// urlSliceParser is a parser for []url.URL
300280type urlSliceParser []url.URL
301281
302- func (t urlSliceParser ) ParseEnv (key string , defaltVal any , opts Parameters ) any {
282+ func (t urlSliceParser ) ParseEnv (key string , opts Parameters ) ( any , error ) {
303283 separator := opts .Separator
304284
305- val := urlSliceOrDefault (key , defaltVal .([]url.URL ), separator )
306-
307- return val
285+ return getURLSlice (key , separator )
308286}
309287
310288// ipParser is a parser for net.IP
311289type ipParser net.IP
312290
313- func (t ipParser ) ParseEnv (key string , defaltVal any , _ Parameters ) any {
314- val := ipOrDefault (key , defaltVal .(net.IP ))
315-
316- return val
291+ func (t ipParser ) ParseEnv (key string , _ Parameters ) (any , error ) {
292+ return getIP (key )
317293}
318294
319295// ipSliceParser is a parser for []net.IP
320296type ipSliceParser []net.IP
321297
322- func (t ipSliceParser ) ParseEnv (key string , defaltVal any , opts Parameters ) any {
298+ func (t ipSliceParser ) ParseEnv (key string , opts Parameters ) ( any , error ) {
323299 separator := opts .Separator
324300
325- val := ipSliceOrDefault (key , defaltVal .([]net.IP ), separator )
326-
327- return val
301+ return getIPSlice (key , separator )
328302}
329303
330304// boolSliceParser is a parser for []bool
331305type boolSliceParser []bool
332306
333- func (b boolSliceParser ) ParseEnv (key string , defaltVal any , options Parameters ) any {
307+ func (b boolSliceParser ) ParseEnv (key string , options Parameters ) ( any , error ) {
334308 sep := options .Separator
335309
336- val := boolSliceOrDefault (key , defaltVal .([]bool ), sep )
337-
338- return val
310+ return getBoolSlice (key , sep )
339311}
340312
341313type complexParser [T Complex ] struct {}
342314
343- func (n complexParser [T ]) ParseEnv (key string , defaltVal any , _ Parameters ) any {
344- val := complexOrDefaultGen [T ](key , defaltVal .(T ))
345-
346- return val
315+ func (n complexParser [T ]) ParseEnv (key string , _ Parameters ) (any , error ) {
316+ return getComplexGen [T ](key )
347317}
348318
349319type complexSliceParser [S []T , T Complex ] struct {}
350320
351- func (i complexSliceParser [S , T ]) ParseEnv (key string , defaltVal any , options Parameters ) any {
321+ func (i complexSliceParser [S , T ]) ParseEnv (key string , options Parameters ) ( any , error ) {
352322 sep := options .Separator
353323
354- val := complexSliceOrDefaultGen (key , defaltVal .(S ), sep )
355-
356- return val
324+ return getComplexSliceGen [S , T ](key , sep )
357325}
0 commit comments