aboutsummaryrefslogtreecommitdiff
path: root/lib/xixanta/src/object.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xixanta/src/object.rs')
-rw-r--r--lib/xixanta/src/object.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/xixanta/src/object.rs b/lib/xixanta/src/object.rs
index 6209afd..cc8908c 100644
--- a/lib/xixanta/src/object.rs
+++ b/lib/xixanta/src/object.rs
@@ -329,14 +329,22 @@ impl Context {
/// Sets a value for an object identified by `id`. If `overwrite` is set to
/// true, then this value will be set even if the id already existed,
- /// otherwise it will return a ContextError
+ /// otherwise it will return a ContextError. If 'force_global' is set to
+ /// true, then the variable will be defined at the global context, not the
+ /// current one.
pub fn set_variable(
&mut self,
id: &PString,
object: &Object,
overwrite: bool,
+ force_global: bool,
) -> Result<(), String> {
- let scope_name = self.name().to_string();
+ let scope_name = if force_global {
+ GLOBAL_CONTEXT
+ } else {
+ self.name()
+ }
+ .to_string();
let scope = self.map.get_mut(&scope_name).unwrap();
match scope.get_mut(&id.value) {