@Override public Object execute(ClosureExpression it) { it.get(this); return this; }
@Override public Object get(Map<String, Object> model) { closure.setContext(model == null ? Collections.<String, Object>emptyMap() : model); return closure; } }
@Override public void setVariable(Variable v) { closure.setVariable(v); }
ClosureExpression closure = new ClosureExpression(); List<String> lines = getBlocks(exp); if (lines.isEmpty()) firstLine = closure.parseArguments(firstLine); if (firstLine.length() == 0) lines.remove(0); if (isLineCommented(s)) continue; closure.add(prepare(s, model, functions, imports, isTemplate)); ClosureExpression closure = new ClosureExpression(); for (Statement s : statements) { switch (s.type) { case FOR: case WHILE: closure.add(s.prepare(model, functions, imports)); break; List<String> lines = getBlocks(s.statement); if (lines.size() > 1) { ClosureExpression inner = new ClosureExpression(); for (String line : lines) { if (isLineCommented(line)) continue; inner.add(prepare(line, model, functions, imports, isTemplate));
ClosureExpression closure = new ClosureExpression(); List<String> lines = getBlocks(exp); if (lines.isEmpty()) firstLine = closure.parseArguments(firstLine); if (firstLine.length() == 0) lines.remove(0); if (isLineCommented(s)) continue; closure.add(prepare(s, model, functions, imports, isTemplate)); ClosureExpression closure = new ClosureExpression(); for (Statement s : statements) { switch (s.type) { case FOR: case WHILE: closure.add(s.prepare(model, functions, imports)); break; List<String> lines = getBlocks(s.statement); if (lines.size() > 1) { ClosureExpression inner = new ClosureExpression(); for (String line : lines) { if (isLineCommented(line)) continue; inner.add(prepare(line, model, functions, imports, isTemplate));
@Override public Object execute(ClosureExpression it) { it.get(this); return this; }
@Override public Object get(Map<String, Object> model) { closure.setContext(model == null ? Collections.<String, Object>emptyMap() : model); return closure; } }
@Override public void setVariable(Variable v) { closure.setVariable(v); }
@Override public Object get() { return get(context); }
@Override public Object get() { return get(context); }
@Override public String supply() { return String.valueOf(expression.get()); } };
@Override public String supply() { return String.valueOf(expression.get()); } };
@Override public Object execute(ClosureExpression it) { it.get(getConfig()); return config; }
@Override public Object execute(ClosureExpression it) { it.get(getConfig()); return config; }
return exp.get(model, arr);
return exp.get(model, arr);
Assert.assertEquals(1, ((ClosureExpression) EvalTools.prepare("{ -> 1}").get()).get()); Assert.assertEquals(1, EvalTools.prepare("{1}()").get()); assertEquals("UPPER", ((ClosureExpression) EvalTools.prepare("{ it.toUpperCase() }").get()).get(model)); "it=it.substring(0,2)\n" + "it.toUpperCase()\n" + " }").get()).get(model)); Assert.assertEquals("up", model.get("it")); assertEquals("UPPER", ((ClosureExpression) EvalTools.prepare("{s -> s.toUpperCase() }").get()).get(model)); assertEquals("UPPER", ((ClosureExpression) EvalTools.prepare("{String s -> s.toUpperCase() }").get()).get(model)); assertEquals("UPPER", ((ClosureExpression) EvalTools.prepare("{def s -> s.toUpperCase() }").get()).get(model)); model.put("s", "upper"); ClosureExpression closure = (ClosureExpression) EvalTools.prepare("{s.toUpperCase()}").get(model); assertEquals("UPPER", closure.get()); model.put("s", "lower"); assertEquals("LOWER", closure.get());