summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/lib.rs26
1 files changed, 10 insertions, 16 deletions
diff --git a/src/lib.rs b/src/lib.rs
index e147e8e..b0f6264 100755
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -34,12 +34,6 @@ fn tr_op(op: &forth::vm::OpCode) -> String {
s.to_string()
}
-fn map_set<T: Into::<JsValue>>(m: &js_sys::Map, k: &str, v: T) {
- let jk: js_sys::JsString = k.to_string().into();
- let jv = v.into();
- m.set(&jk, &jv);
-}
-
impl From<&forth::vm::InstructionPointer> for js_sys::Map {
fn from(ip: &forth::vm::InstructionPointer) -> Self {
let res = Self::new();
@@ -134,7 +128,7 @@ impl ExportedVM {
js_sys::Array::from_iter(ops)
}
);
- map_set(&res, "wordlist", js_sys::Array::from_iter(wl));
+ res.set(&"wordlist".into(), &js_sys::Array::from_iter(wl));
// annotations
let annos = self.annos.iter().map(
@@ -148,31 +142,31 @@ impl ExportedVM {
js_sys::Array::from_iter(ops)
}
);
- map_set(&res, "annos", js_sys::Array::from_iter(annos));
+ res.set(&"annos".into(), &js_sys::Array::from_iter(annos));
// instruction pointer
let ip: js_sys::Map = (&vm.ip).into();
- map_set(&res, "ip", js_sys::Object::from_entries(&ip)?);
+ res.set(&"ip".into(), &js_sys::Object::from_entries(&ip)?.into());
// stack
let s = vm.stack.0.iter().map(|v| Into::<JsValue>::into(*v as i32));
- map_set(&res, "stack", js_sys::Array::from_iter(s));
+ res.set(&"stack".into(), &js_sys::Array::from_iter(s));
// callstack
let cs = vm.callstack.0.iter().map(|v| {
let ip: js_sys::Map = v.into();
js_sys::Object::from_entries(&ip).expect("can't make object from ip map")
});
- map_set(&res, "callstack", js_sys::Array::from_iter(cs));
+ res.set(&"callstack".into(), &js_sys::Array::from_iter(cs));
let vars = js_sys::Map::new();
let mut out = vec![];
std::mem::swap(&mut out, &mut vm.out);
- map_set(&vars, "out", out);
- map_set::<isize>(&vars, "heading", vm.heading.into());
- map_set::<isize>(&vars, "speed", vm.speed.into());
- map_set::<isize>(&vars, "doppler", vm.doppler.into());
- map_set(&res, "vars", js_sys::Object::from_entries(&vars)?);
+ vars.set(&"out".into(), &out.into());
+ vars.set(&"heading".into(), &vm.heading.into());
+ vars.set(&"speed".into(), &vm.speed.into());
+ vars.set(&"doppler".into(), &vm.doppler.into());
+ res.set(&"vars".into(), &js_sys::Object::from_entries(&vars)?.into());
Ok(js_sys::Object::from_entries(&res)?)
}