bracketed parameter in join()
This commit is contained in:
parent
c7ff047e81
commit
8718673519
@ -146,14 +146,14 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
||||
f.insert(
|
||||
"join".to_owned(),
|
||||
Box::new(|mut args, _| {
|
||||
max_args!(args, 3);
|
||||
max_args!(args, 4);
|
||||
let (mut list1, sep1, brackets) = match arg!(args, 0, "list1") {
|
||||
Value::List(v, sep, brackets) => (v, sep, brackets),
|
||||
v => (vec![v], ListSeparator::Space, Brackets::None),
|
||||
};
|
||||
let (list2, sep2) = match arg!(args, 1, "list2") {
|
||||
Value::List(v, sep, ..) => (v, sep),
|
||||
v => (vec![v], ListSeparator::Space),
|
||||
let list2 = match arg!(args, 1, "list2") {
|
||||
Value::List(v, ..) => v,
|
||||
v => vec![v],
|
||||
};
|
||||
let sep = match arg!(
|
||||
args,
|
||||
@ -177,6 +177,24 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
||||
_ => return Err("$separator: Must be \"space\", \"comma\", or \"auto\".".into()),
|
||||
};
|
||||
|
||||
let brackets = match arg!(
|
||||
args,
|
||||
3,
|
||||
"bracketed" = Value::Ident("auto".to_owned(), QuoteKind::None)
|
||||
) {
|
||||
Value::Ident(s, ..) => match s.as_str() {
|
||||
"auto" => brackets,
|
||||
_ => Brackets::Bracketed,
|
||||
},
|
||||
v => {
|
||||
if v.is_true()? {
|
||||
Brackets::Bracketed
|
||||
} else {
|
||||
Brackets::None
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
list1.extend(list2);
|
||||
|
||||
Ok(Value::List(list1, sep, brackets))
|
||||
|
@ -182,6 +182,31 @@ test!(
|
||||
"a {\n color: join((a, b), (c));\n}\n",
|
||||
"a {\n color: a, b, c;\n}\n"
|
||||
);
|
||||
test!(
|
||||
join_bracketed_null,
|
||||
"a {\n color: join([a b], c, $bracketed: null);\n}\n",
|
||||
"a {\n color: a b c;\n}\n"
|
||||
);
|
||||
test!(
|
||||
join_bracketed_false,
|
||||
"a {\n color: join([a b], c, $bracketed: false);\n}\n",
|
||||
"a {\n color: a b c;\n}\n"
|
||||
);
|
||||
test!(
|
||||
join_bracketed_auto_brackets,
|
||||
"a {\n color: join([a b], c, $bracketed: auto);\n}\n",
|
||||
"a {\n color: [a b c];\n}\n"
|
||||
);
|
||||
test!(
|
||||
join_bracketed_auto_none,
|
||||
"a {\n color: join(a b, c, $bracketed: auto);\n}\n",
|
||||
"a {\n color: a b c;\n}\n"
|
||||
);
|
||||
test!(
|
||||
join_bracketed_random_string,
|
||||
"a {\n color: join(a b, c, $bracketed: afhsihsdhsdkhsd);\n}\n",
|
||||
"a {\n color: [a b c];\n}\n"
|
||||
);
|
||||
test!(bracketed_ident, "a {\n color: [a];\n}\n");
|
||||
test!(bracketed_space_list, "a {\n color: [a b];\n}\n");
|
||||
test!(bracketed_comma_list, "a {\n color: [a, b];\n}\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user