@@ -126,27 +126,21 @@ impl Source for Environment {
126
126
}
127
127
128
128
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) )
142
136
} else {
143
- ValueKind :: String ( value)
137
+ Value :: new ( Some ( & uri ) , ValueKind :: String ( value) )
144
138
}
145
139
} else {
146
- ValueKind :: String ( value)
140
+ Value :: new ( Some ( & uri ) , ValueKind :: String ( value) )
147
141
} ;
148
142
149
- m. insert ( key. to_lowercase ( ) , Value :: new ( Some ( & uri ) , value) ) ;
143
+ m. insert ( key. to_lowercase ( ) , value) ;
150
144
}
151
145
152
146
Ok ( m)
0 commit comments