(source: &str, options: Option<Object>, mode: Mode)
| 52 | const PY_EVAL_VM_ID: &str = "__py_eval_vm"; |
| 53 | |
| 54 | fn run_py(source: &str, options: Option<Object>, mode: Mode) -> Result<JsValue, JsValue> { |
| 55 | let vm = VMStore::init(PY_EVAL_VM_ID.into(), Some(true)); |
| 56 | let options = options.unwrap_or_default(); |
| 57 | let js_vars = { |
| 58 | let prop = Reflect::get(&options, &"vars".into())?; |
| 59 | if prop.is_undefined() { |
| 60 | None |
| 61 | } else if prop.is_object() { |
| 62 | Some(Object::from(prop)) |
| 63 | } else { |
| 64 | return Err(TypeError::new("vars must be an object").into()); |
| 65 | } |
| 66 | }; |
| 67 | |
| 68 | vm.set_stdout(Reflect::get(&options, &"stdout".into())?)?; |
| 69 | |
| 70 | if let Some(js_vars) = js_vars { |
| 71 | vm.add_to_scope("js_vars".into(), js_vars.into())?; |
| 72 | } |
| 73 | vm.run(source, mode, None) |
| 74 | } |
| 75 | |
| 76 | /// Evaluate Python code |
| 77 | /// |
no test coverage detected