]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jrubyscripting] Accept generic global variable names (#12539)
authorjimtng <2554958+jimtng@users.noreply.github.com>
Fri, 1 Apr 2022 21:17:03 +0000 (07:17 +1000)
committerGitHub <noreply@github.com>
Fri, 1 Apr 2022 21:17:03 +0000 (23:17 +0200)
Signed-off-by: Jimmy Tanagra <jcode@tanagra.id.au>
bundles/org.openhab.automation.jrubyscripting/src/main/java/org/openhab/automation/jrubyscripting/internal/JRubyScriptEngineFactory.java

index c903ab78e6c549c51bcac5da992763827dcb2e90..74501aa84895139c1f5a2feac9704ca7d6e1ae8d 100644 (file)
@@ -48,9 +48,6 @@ public class JRubyScriptEngineFactory extends AbstractScriptEngineFactory {
     // difficult ways to debug.
     private static final Set<String> FILTERED_PRESETS = Set.of("File", "Files", "Path", "Paths");
     private static final Set<String> INSTANCE_PRESETS = Set.of();
-    private static final Set<String> 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<String, Object> mapGlobalPresets(Map.Entry<String, Object> 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;