From 60a831cc4d2737c90a008836602bfde7c043c844 Mon Sep 17 00:00:00 2001 From: mattirn Date: Sat, 22 Feb 2020 19:59:26 +0100 Subject: [PATCH] GroovyEngine: reviewed class statement evaluation --- .../java/org/jline/script/GroovyEngine.java | 30 +++---------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/groovy/src/main/java/org/jline/script/GroovyEngine.java b/groovy/src/main/java/org/jline/script/GroovyEngine.java index e66085f70..a99057f5c 100644 --- a/groovy/src/main/java/org/jline/script/GroovyEngine.java +++ b/groovy/src/main/java/org/jline/script/GroovyEngine.java @@ -42,7 +42,6 @@ public class GroovyEngine implements ScriptEngine { private Binding sharedData; private Map imports = new HashMap<>(); private Map methods = new HashMap<>(); - private Map classes = new HashMap<>(); public GroovyEngine() { this.sharedData = new Binding(); @@ -155,24 +154,15 @@ public Object execute(String statement) throws Exception { if (methods.containsKey(name)) { out = "def " + name + methods.get(name); } - } else if (classDef(statement)) { - // do nothing - } else if (statement.equals("class")) { - out = classes.values(); - } else if (statement.matches("class\\s+" + REGEX_VAR)) { - String name = statement.split("\\s+")[1]; - if (classes.containsKey(name)) { - out = classes.get(name); - } } else { String e = ""; for (Map.Entry entry : imports.entrySet()) { e += entry.getValue()+"\n"; } - for (String c : classes.values()) { - e += c; - } e += statement; + if (classDef(statement)) { + e += "; null"; + } out = shell.evaluate(e); } return out; @@ -214,13 +204,7 @@ private boolean functionDef (String statement) throws Exception{ } private boolean classDef (String statement) throws Exception{ - boolean out = false; - Matcher m = PATTERN_CLASS_DEF.matcher(statement); - if(m.matches()){ - out = true; - classes.put(m.group(1), statement); - } - return out; + return PATTERN_CLASS_DEF.matcher(statement).matches(); } private void del(String var) { @@ -242,14 +226,8 @@ private void del(String var) { methods.remove(v); } } - if (classes.containsKey(v)) { - classes.remove(v); - } } } - if (classes.containsKey(var)) { - classes.remove(var); - } } @Override