| 66 | } |
| 67 | |
| 68 | pub fn inject_object<K>(&mut self, name: &'static str, fields: HashMap<K, serde_json::Value>) |
| 69 | where |
| 70 | K: AsRef<str> + Eq, |
| 71 | { |
| 72 | self.arena.mutate_root(|mc, state| { |
| 73 | let ctx = state.get_context(); |
| 74 | let name = state.intern_static(name); |
| 75 | let mut obj = Object::default(); |
| 76 | for (key, value) in fields { |
| 77 | obj.fields.insert( |
| 78 | state.intern(key.as_ref().as_bytes()), |
| 79 | Value::from_serde_value(ctx, &value), |
| 80 | ); |
| 81 | } |
| 82 | state |
| 83 | .globals |
| 84 | .insert(name, Value::Object(Gc::new(mc, RefLock::new(obj)))); |
| 85 | }); |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | #[cfg(test)] |