implement builtin function index
This commit is contained in:
parent
dbbadaf62e
commit
72bc9a46e3
@ -193,4 +193,20 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
|||||||
}))
|
}))
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
f.insert(
|
||||||
|
"index".to_owned(),
|
||||||
|
Box::new(|mut args, _| {
|
||||||
|
max_args!(args, 2);
|
||||||
|
let list = match arg!(args, 0, "list") {
|
||||||
|
Value::List(v, ..) => v,
|
||||||
|
v => vec![v],
|
||||||
|
};
|
||||||
|
let value = arg!(args, 1, "value");
|
||||||
|
let index = match list.into_iter().position(|v| v == value) {
|
||||||
|
Some(v) => Number::from(v + 1),
|
||||||
|
None => return Ok(Value::Null),
|
||||||
|
};
|
||||||
|
Ok(Value::Dimension(index, Unit::None))
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -189,3 +189,18 @@ test!(
|
|||||||
deeply_nested_square_braces,
|
deeply_nested_square_braces,
|
||||||
"a {\n color: [[[[[[a]]]]]];\n}\n"
|
"a {\n color: [[[[[[a]]]]]];\n}\n"
|
||||||
);
|
);
|
||||||
|
test!(
|
||||||
|
index_found_space_separated,
|
||||||
|
"a {\n color: index(1px solid red, solid);\n}\n",
|
||||||
|
"a {\n color: 2;\n}\n"
|
||||||
|
);
|
||||||
|
test!(
|
||||||
|
index_not_found_space_separated,
|
||||||
|
"a {\n color: index(1px solid red, dashed);\n}\n",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
// test!(
|
||||||
|
// index_found_map,
|
||||||
|
// "a {\n color: index((width: 10px, height: 20px), (height 20px));\n}\n",
|
||||||
|
// "a {\n color: 2;\n}\n"
|
||||||
|
// );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user