better error messages for map-get and map-has-key
This commit is contained in:
parent
4b1dc39705
commit
9e3029dbfb
@ -9,12 +9,12 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
||||
"map-get".to_owned(),
|
||||
Box::new(|args, _| {
|
||||
max_args!(args, 2);
|
||||
let key = arg!(args, 1, "key");
|
||||
let map = match arg!(args, 0, "map") {
|
||||
Value::Map(m) => m,
|
||||
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
||||
};
|
||||
let key = arg!(args, 1, "key");
|
||||
Ok(map.get(key)?.unwrap_or(Value::Null).clone())
|
||||
}),
|
||||
);
|
||||
@ -22,12 +22,12 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
||||
"map-has-key".to_owned(),
|
||||
Box::new(|args, _| {
|
||||
max_args!(args, 2);
|
||||
let key = arg!(args, 1, "key");
|
||||
let map = match arg!(args, 0, "map") {
|
||||
Value::Map(m) => m,
|
||||
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
||||
};
|
||||
let key = arg!(args, 1, "key");
|
||||
Ok(Value::bool(map.get(key)?.is_some()))
|
||||
}),
|
||||
);
|
||||
|
10
tests/map.rs
10
tests/map.rs
@ -111,3 +111,13 @@ test!(
|
||||
"a {\n color: length((a: b, c: d, e: f));\n}\n",
|
||||
"a {\n color: 3;\n}\n"
|
||||
);
|
||||
error!(
|
||||
map_get_one_arg,
|
||||
"a {\n color: map-get(1);\n}\n",
|
||||
"Error: Missing argument $key."
|
||||
);
|
||||
error!(
|
||||
map_has_key_one_arg,
|
||||
"a {\n color: map-has-key(1);\n}\n",
|
||||
"Error: Missing argument $key."
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user