From 77c765085e28abb60adc3431036e0a8df74219ae Mon Sep 17 00:00:00 2001 From: jimtng <2554958+jimtng@users.noreply.github.com> Date: Sat, 2 Apr 2022 07:17:03 +1000 Subject: [PATCH] [jrubyscripting] Accept generic global variable names (#12539) Signed-off-by: Jimmy Tanagra --- .../jrubyscripting/internal/JRubyScriptEngineFactory.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bundles/org.openhab.automation.jrubyscripting/src/main/java/org/openhab/automation/jrubyscripting/internal/JRubyScriptEngineFactory.java b/bundles/org.openhab.automation.jrubyscripting/src/main/java/org/openhab/automation/jrubyscripting/internal/JRubyScriptEngineFactory.java index c903ab78e..74501aa84 100644 --- a/bundles/org.openhab.automation.jrubyscripting/src/main/java/org/openhab/automation/jrubyscripting/internal/JRubyScriptEngineFactory.java +++ b/bundles/org.openhab.automation.jrubyscripting/src/main/java/org/openhab/automation/jrubyscripting/internal/JRubyScriptEngineFactory.java @@ -48,9 +48,6 @@ public class JRubyScriptEngineFactory extends AbstractScriptEngineFactory { // difficult ways to debug. private static final Set FILTERED_PRESETS = Set.of("File", "Files", "Path", "Paths"); private static final Set INSTANCE_PRESETS = Set.of(); - private static final Set GLOBAL_PRESETS = Set.of("scriptExtension", "automationManager", "ruleRegistry", - "items", "voice", "rules", "things", "events", "itemRegistry", "ir", "actions", "se", "audio", - "lifecycleTracker"); private final javax.script.ScriptEngineFactory factory = new org.jruby.embed.jsr223.JRubyEngineFactory(); @@ -69,7 +66,8 @@ public class JRubyScriptEngineFactory extends AbstractScriptEngineFactory { // Adds $ in front of a set of variables so that Ruby recognizes them as global variables private static Map.Entry mapGlobalPresets(Map.Entry entry) { - if (GLOBAL_PRESETS.contains(entry.getKey())) { + if (Character.isLowerCase(entry.getKey().charAt(0)) && !(entry.getValue() instanceof Class) + && !(entry.getValue() instanceof Enum)) { return Map.entry("$" + entry.getKey(), entry.getValue()); } else { return entry;