From a1068910504f8545cddc8d501fa230c55e146dd5 Mon Sep 17 00:00:00 2001 From: Akulij Date: Sat, 31 May 2025 13:42:54 +0500 Subject: [PATCH] create call_attacher for Runner to attach global objects on initialization --- src/botscript.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/botscript.rs b/src/botscript.rs index 67ae0dd..fff66c9 100644 --- a/src/botscript.rs +++ b/src/botscript.rs @@ -13,12 +13,12 @@ use itertools::Itertools; use quickjs_rusty::serde::from_js; use quickjs_rusty::utils::create_empty_object; use quickjs_rusty::utils::create_string; -use quickjs_rusty::Context; use quickjs_rusty::ContextError; use quickjs_rusty::ExecutionError; use quickjs_rusty::JsFunction; use quickjs_rusty::OwnedJsValue as JsValue; use quickjs_rusty::ValueError; +use quickjs_rusty::{Context, OwnedJsObject}; use serde::Deserialize; use serde::Serialize; @@ -665,6 +665,17 @@ impl Runner { }) } + pub fn call_attacher(&mut self, f: F) -> ScriptResult + where + F: FnOnce(&Context, &mut OwnedJsObject) -> R, + { + let context = self.context.lock().unwrap(); + let mut global = context.global()?; + + let res = f(&context, &mut global); + Ok(res) + } + pub fn run_script(&self, content: &str) -> ScriptResult { let ctx = match self.context.lock() { Ok(ctx) => ctx,