Skip to main content

expand_defs

Function expand_defs 

Source
pub fn expand_defs(
    argv: &[String],
    defs: &BTreeMap<String, Def>,
) -> Result<Vec<String>, String>
Expand description

Expand {def:NAME} tokens in a probe argv. An element that is exactly one {def:NAME} token whose def is a list splices to multiple elements; a string def expands inside elements. A list def referenced inside a larger element, or an unknown def, is an error (the rule is broken).

ยงExamples

use std::collections::BTreeMap;
use coding_tools::rules::{expand_defs, Def};

let mut defs = BTreeMap::new();
defs.insert("layer".into(), Def::One("src/domain".into()));
defs.insert("types".into(), Def::Many(vec!["A".into(), "B".into()]));

let argv: Vec<String> = ["--base", "{def:layer}", "--items", "{def:types}"]
    .iter().map(|s| s.to_string()).collect();
assert_eq!(
    expand_defs(&argv, &defs).unwrap(),
    ["--base", "src/domain", "--items", "A", "B"]
);
assert!(expand_defs(&["x{def:types}".to_string()], &defs).is_err());
assert!(expand_defs(&["{def:nope}".to_string()], &defs).is_err());