Skip to content

Commit 7dcd05c

Browse files
Merge pull request #185 from matthiasbeyer/custom-env-seperator
Fix custom separator for group prefixes
2 parents 20d3772 + b2a44a0 commit 7dcd05c

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/env.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,16 @@ impl Source for Environment {
7676
_ => "",
7777
};
7878

79+
let group_separator = match self.separator {
80+
Some(ref separator) => separator,
81+
_ => "_",
82+
};
83+
7984
// Define a prefix pattern to test and exclude from keys
80-
let prefix_pattern = self.prefix.as_ref().map(|prefix| prefix.clone() + "_");
85+
let prefix_pattern = self
86+
.prefix
87+
.as_ref()
88+
.map(|prefix| format!("{}{}", prefix.clone(), group_separator));
8189

8290
for (key, value) in env::vars() {
8391
// Treat empty environment variables as unset

tests/env.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,14 @@ fn test_empty_value_is_ignored() {
7171

7272
env::remove_var("C_A_B");
7373
}
74+
75+
#[test]
76+
fn test_custom_separator_behavior() {
77+
env::set_var("C.B.A", "abc");
78+
79+
let environment = Environment::with_prefix("C").separator(".");
80+
81+
assert!(environment.collect().unwrap().contains_key("b.a"));
82+
83+
env::remove_var("C.B.A");
84+
}

0 commit comments

Comments
 (0)