File tree Expand file tree Collapse file tree 2 files changed +12
-2
lines changed Expand file tree Collapse file tree 2 files changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -126,10 +126,14 @@ impl Source for Environment {
126
126
}
127
127
128
128
let value = if self . parse_numbers {
129
- if let Ok ( parsed) = value. parse ( ) {
129
+ let string_value = Value :: new ( Some ( & uri) , ValueKind :: String ( value. clone ( ) ) ) ;
130
+
131
+ if let Ok ( parsed) = string_value. clone ( ) . into_int ( ) {
130
132
ValueKind :: Integer ( parsed)
131
- } else if let Ok ( parsed) = value . parse ( ) {
133
+ } else if let Ok ( parsed) = string_value . clone ( ) . into_float ( ) {
132
134
ValueKind :: Float ( parsed)
135
+ } else if let Ok ( parsed) = string_value. clone ( ) . into_bool ( ) {
136
+ ValueKind :: Boolean ( parsed)
133
137
} else {
134
138
ValueKind :: String ( value)
135
139
}
Original file line number Diff line number Diff line change @@ -87,6 +87,7 @@ fn test_custom_separator_behavior() {
87
87
fn test_parse_numbers ( ) {
88
88
env:: set_var ( "INT_VAL" , "42" ) ;
89
89
env:: set_var ( "FLOAT_VAL" , "42.2" ) ;
90
+ env:: set_var ( "BOOL_VAL" , "true" ) ;
90
91
91
92
let environment = Environment :: new ( ) . parse_numbers ( true ) ;
92
93
let values = environment. collect ( ) . unwrap ( ) ;
@@ -99,7 +100,12 @@ fn test_parse_numbers() {
99
100
values. get( "float_val" ) . unwrap( ) . clone( ) . into_float( ) . ok( ) ,
100
101
Some ( 42.2 )
101
102
) ;
103
+ assert_eq ! (
104
+ values. get( "bool_val" ) . unwrap( ) . clone( ) . into_bool( ) . ok( ) ,
105
+ Some ( true )
106
+ ) ;
102
107
103
108
env:: remove_var ( "INT_VAL" ) ;
104
109
env:: remove_var ( "FLOAT_VAL" ) ;
110
+ env:: remove_var ( "BOOL_VAL" ) ;
105
111
}
You can’t perform that action at this time.
0 commit comments