5 unstable releases
0.2.1 | Nov 29, 2022 |
---|---|
0.2.0 | Apr 2, 2020 |
0.1.1 | Jun 4, 2019 |
0.1.0 | May 28, 2019 |
0.0.1 | May 14, 2019 |
#666 in Rust patterns
3,774 downloads per month
Used in 7 crates
8KB
106 lines
envsubst
A simple Rust library for variables substitution.
This library provide helper functions for string manipulation, taking values from a context environment map and substituting all matching placeholders.
Its name and logic is similar to the envsubst
GNU utility, but
this only supports braces-delimited variables (i.e. ${foo}
) and
takes replacement values from an explicit map of variables.
License
Licensed under either of
- MIT license - http://opensource.org/licenses/MIT
- Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0
at your option.
lib.rs
:
Variables substitution in string templates.
This library provide helper functions for string manipulation, taking values from a context environment map and substituting all matching placeholders.
Its name and logic is similar to the envsubst
GNU utility, but
this only supports braces-delimited variables (i.e. ${foo}
) and
takes replacement values from an explicit map of variables.
Example
let base_url = "${protocol}://${hostname}/${endpoint}";
assert!(envsubst::is_templated(base_url));
let mut context = std::collections::HashMap::new();
context.insert("protocol".to_string(), "https".to_string());
context.insert("hostname".to_string(), "example.com".to_string());
context.insert("endpoint".to_string(), "login".to_string());
assert!(envsubst::validate_vars(&context).is_ok());
let final_url = envsubst::substitute(base_url, &context).unwrap();
assert!(!envsubst::is_templated(&final_url));
assert_eq!(final_url, "https://example.com/login");
Dependencies
~240–700KB
~16K SLoC