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(),
|
"map-get".to_owned(),
|
||||||
Box::new(|args, _| {
|
Box::new(|args, _| {
|
||||||
max_args!(args, 2);
|
max_args!(args, 2);
|
||||||
|
let key = arg!(args, 1, "key");
|
||||||
let map = match arg!(args, 0, "map") {
|
let map = match arg!(args, 0, "map") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
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())
|
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(),
|
"map-has-key".to_owned(),
|
||||||
Box::new(|args, _| {
|
Box::new(|args, _| {
|
||||||
max_args!(args, 2);
|
max_args!(args, 2);
|
||||||
|
let key = arg!(args, 1, "key");
|
||||||
let map = match arg!(args, 0, "map") {
|
let map = match arg!(args, 0, "map") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
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()))
|
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: length((a: b, c: d, e: f));\n}\n",
|
||||||
"a {\n color: 3;\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