handle brackets in append()

This commit is contained in:
ConnorSkees 2020-04-02 15:12:13 -04:00
parent 72bc9a46e3
commit 225894d0e9
2 changed files with 14 additions and 5 deletions

View File

@ -115,9 +115,9 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
"append".to_owned(), "append".to_owned(),
Box::new(|mut args, _| { Box::new(|mut args, _| {
max_args!(args, 3); max_args!(args, 3);
let (mut list, sep) = match arg!(args, 0, "list") { let (mut list, sep, brackets) = match arg!(args, 0, "list") {
Value::List(v, sep, ..) => (v, sep), Value::List(v, sep, b) => (v, sep, b),
v => (vec![v], ListSeparator::Space), v => (vec![v], ListSeparator::Space, Brackets::None),
}; };
let val = arg!(args, 1, "val"); let val = arg!(args, 1, "val");
let sep = match arg!( let sep = match arg!(
@ -133,12 +133,12 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
return Err("$separator: Must be \"space\", \"comma\", or \"auto\".".into()) return Err("$separator: Must be \"space\", \"comma\", or \"auto\".".into())
} }
}, },
_ => return Err("$separator: Must be \"space\", \"comma\", or \"auto\".".into()), v => return Err(format!("$separator: {} is not a string.", v).into()),
}; };
list.push(val); list.push(val);
Ok(Value::List(list, sep, Brackets::None)) Ok(Value::List(list, sep, brackets))
}), }),
); );
f.insert( f.insert(

View File

@ -113,6 +113,15 @@ test!(
"a {\n color: append((), a);\n}\n", "a {\n color: append((), a);\n}\n",
"a {\n color: a;\n}\n" "a {\n color: a;\n}\n"
); );
test!(
append_bracketed,
"a {\n color: append([], 1);\n}\n",
"a {\n color: [1];\n}\n"
);
error!(
append_non_string_separator,
"a {b: append(c, d, $separator: 1);}", "Error: $separator: 1 is not a string."
);
test!( test!(
join_space_separated, join_space_separated,
"a {\n color: join(a b, c d);\n}\n", "a {\n color: join(a b, c d);\n}\n",