1use crate::vmt::Vmt;
2use crate::interner::intern_key;
3use source_kv::Value;
4
5impl Vmt {
6 pub fn apply_patch(&mut self, patch: &Vmt) {
8 if let Some(Value::Obj(replace_map)) = patch.get_raw("replace") {
10 for (k, v) in replace_map {
11 self.properties.insert(intern_key(k), v.clone());
12 }
13 }
14
15 if let Some(Value::Obj(insert_map)) = patch.get_raw("insert") {
17 for (k, v) in insert_map {
18 self.properties.insert(intern_key(k), v.clone());
19 }
20 }
21
22 self.properties.shift_remove(&intern_key("insert"));
24 self.properties.shift_remove(&intern_key("replace"));
25 self.properties.shift_remove(&intern_key("include"));
26 self.properties.shift_remove(&intern_key("$include"));
27 }
28}