pub fn dynamic_format(
pattern: &str,
dictionary: &HashMap<&str, &str>,
) -> Result<String, Box<DynamicFormatError>>Expand description
Lightweight, dynamic, Python-styled string formatting (Only support String,
{key} patterns). It only needs std to work.
Escape patterns are {{ and }}.
It returns the formatted string.
§Errors
- Error kind
DynamicFormatErrorKind::KeyErrorif the key in the brackets is not found indictionary. - Error kind
DynamicFormatErrorKind::TokenErrorif there is any unmatched bracket ({or})
§Examples
use dyn_formatting::dynamic_format;
assert_eq!(
dynamic_format(
"I'm {name}. I'm {age} years old now.",
&[("name", "ABC"), ("age", "20")].into()
).unwrap(),
"I'm ABC. I'm 20 years old now.".to_string()
);use dyn_formatting::dynamic_format;
use std::collections::HashMap;
let value_age = (15).to_string(); // Make lifetime long enough
let dictionary = HashMap::from([
("age", value_age.as_str()),
]);
assert_eq!(
dynamic_format("{{{age} }}{age}", &dictionary).unwrap(),
"{15 }15"
)use dyn_formatting::dynamic_format;
assert!(
dynamic_format(
"I'm {name}. I'm {age} years old now.",
&[("name", "ABC")].into()
).is_err() // Key error
);use dyn_formatting::dynamic_format;
assert!(
dynamic_format(
"I'm {name{name}}.",
&[("name", "ABC")].into()
).is_err() // Token error: '{' unmatched.
);