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 {
126126 }
127127
128128 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 ( ) {
130132 ValueKind :: Integer ( parsed)
131- } else if let Ok ( parsed) = value . parse ( ) {
133+ } else if let Ok ( parsed) = string_value . clone ( ) . into_float ( ) {
132134 ValueKind :: Float ( parsed)
135+ } else if let Ok ( parsed) = string_value. clone ( ) . into_bool ( ) {
136+ ValueKind :: Boolean ( parsed)
133137 } else {
134138 ValueKind :: String ( value)
135139 }
Original file line number Diff line number Diff line change @@ -87,6 +87,7 @@ fn test_custom_separator_behavior() {
8787fn test_parse_numbers ( ) {
8888 env:: set_var ( "INT_VAL" , "42" ) ;
8989 env:: set_var ( "FLOAT_VAL" , "42.2" ) ;
90+ env:: set_var ( "BOOL_VAL" , "true" ) ;
9091
9192 let environment = Environment :: new ( ) . parse_numbers ( true ) ;
9293 let values = environment. collect ( ) . unwrap ( ) ;
@@ -99,7 +100,12 @@ fn test_parse_numbers() {
99100 values. get( "float_val" ) . unwrap( ) . clone( ) . into_float( ) . ok( ) ,
100101 Some ( 42.2 )
101102 ) ;
103+ assert_eq ! (
104+ values. get( "bool_val" ) . unwrap( ) . clone( ) . into_bool( ) . ok( ) ,
105+ Some ( true )
106+ ) ;
102107
103108 env:: remove_var ( "INT_VAL" ) ;
104109 env:: remove_var ( "FLOAT_VAL" ) ;
110+ env:: remove_var ( "BOOL_VAL" ) ;
105111}
You can’t perform that action at this time.
0 commit comments