Skip to content

Commit a5c3fab

Browse files
joelgallantjohnb8
authored andcommitted
Uses into_* for value conversions and adds bool as an option
1 parent a608884 commit a5c3fab

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/env.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff 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
}

tests/env.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ fn test_custom_separator_behavior() {
8787
fn 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
}

0 commit comments

Comments
 (0)