@@ -126,27 +126,21 @@ impl Source for Environment {
126126 }
127127
128128 let value = if self . try_parsing {
129- let string_value = Value :: new ( Some ( & uri) , ValueKind :: String ( value. clone ( ) ) ) ;
130- let is_true_false =
131- value. to_lowercase ( ) == "true" || value. to_lowercase ( ) == "false" ;
132-
133- // if the value is "true" or "false" it should be parsed as a bool
134- if let ( true , Ok ( parsed) ) = ( is_true_false, string_value. clone ( ) . into_bool ( ) ) {
135- ValueKind :: Boolean ( parsed)
136- } else if let Ok ( parsed) = string_value. clone ( ) . into_int ( ) {
137- ValueKind :: Integer ( parsed)
138- } else if let Ok ( parsed) = string_value. clone ( ) . into_float ( ) {
139- ValueKind :: Float ( parsed)
140- } else if let Ok ( parsed) = string_value. clone ( ) . into_bool ( ) {
141- ValueKind :: Boolean ( parsed)
129+ // convert to lowercase because bool parsing expects all lowercase
130+ if let Ok ( parsed) = value. to_lowercase ( ) . parse :: < bool > ( ) {
131+ Value :: new ( Some ( & uri) , ValueKind :: Boolean ( parsed) )
132+ } else if let Ok ( parsed) = value. parse :: < i64 > ( ) {
133+ Value :: new ( Some ( & uri) , ValueKind :: Integer ( parsed) )
134+ } else if let Ok ( parsed) = value. parse :: < f64 > ( ) {
135+ Value :: new ( Some ( & uri) , ValueKind :: Float ( parsed) )
142136 } else {
143- ValueKind :: String ( value)
137+ Value :: new ( Some ( & uri ) , ValueKind :: String ( value) )
144138 }
145139 } else {
146- ValueKind :: String ( value)
140+ Value :: new ( Some ( & uri ) , ValueKind :: String ( value) )
147141 } ;
148142
149- m. insert ( key. to_lowercase ( ) , Value :: new ( Some ( & uri ) , value) ) ;
143+ m. insert ( key. to_lowercase ( ) , value) ;
150144 }
151145
152146 Ok ( m)
0 commit comments