handle map-merge key overlaps
This commit is contained in:
parent
c8a21f3500
commit
4b1dc39705
@ -1,4 +1,5 @@
|
|||||||
use std::slice::Iter;
|
use std::slice::Iter;
|
||||||
|
use std::vec::IntoIter;
|
||||||
|
|
||||||
use super::Value;
|
use super::Value;
|
||||||
use crate::error::SassResult;
|
use crate::error::SassResult;
|
||||||
@ -30,7 +31,9 @@ impl SassMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn merge(&mut self, other: SassMap) {
|
pub fn merge(&mut self, other: SassMap) {
|
||||||
self.0.extend(other.0);
|
for (key, value) in other.into_iter() {
|
||||||
|
self.insert(key, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn iter(&self) -> Iter<(Value, Value)> {
|
pub fn iter(&self) -> Iter<(Value, Value)> {
|
||||||
@ -55,3 +58,12 @@ impl SassMap {
|
|||||||
self.0.push((key, value));
|
self.0.push((key, value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl IntoIterator for SassMap {
|
||||||
|
type Item = (Value, Value);
|
||||||
|
type IntoIter = IntoIter<Self::Item>;
|
||||||
|
|
||||||
|
fn into_iter(self) -> Self::IntoIter {
|
||||||
|
self.0.into_iter()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -78,6 +78,11 @@ test!(
|
|||||||
"a {\n color: inspect(map-merge((), ()));\n}\n",
|
"a {\n color: inspect(map-merge((), ()));\n}\n",
|
||||||
"a {\n color: ();\n}\n"
|
"a {\n color: ();\n}\n"
|
||||||
);
|
);
|
||||||
|
test!(
|
||||||
|
map_merge_same_keys,
|
||||||
|
"a {\n color: inspect(map-merge((c: d, e: f), (c: 1, e: 2)));\n}\n",
|
||||||
|
"a {\n color: (c: 1, e: 2);\n}\n"
|
||||||
|
);
|
||||||
error!(
|
error!(
|
||||||
map_merge_map1_non_map,
|
map_merge_map1_non_map,
|
||||||
"a {\n color: map-merge(foo, (a: b));\n}\n", "Error: $map1: foo is not a map."
|
"a {\n color: map-merge(foo, (a: b));\n}\n", "Error: $map1: foo is not a map."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user