1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package de.gmorling.scriptabledataset.handlers;
16
17 import javax.script.Invocable;
18 import javax.script.ScriptEngine;
19
20 import org.jruby.RubyObject;
21
22
23
24
25
26 public class JRubyScriptInvocationHandler implements ScriptInvocationHandler {
27
28
29 private ScriptEngine engine;
30
31 @Override
32 public String getLanguageName() {
33 return "jruby";
34 }
35
36 @Override
37 public String preInvoke(String script) {
38 return "require 'date';" + script;
39 }
40
41 @Override
42 public Object postInvoke(Object object) {
43 if (object instanceof RubyObject) {
44 RubyObject rubyObject = (RubyObject) object;
45 if (rubyObject.getMetaClass().getName().equals("DateTime")) {
46 Invocable i = (Invocable) engine;
47 try {
48 object = i.invokeMethod(object, "strftime", "%Y-%m-%d");
49 } catch (Exception e) {
50 throw new RuntimeException(e);
51 }
52 }
53 }
54 return object;
55 }
56
57 @Override
58 public void setScriptEngine(ScriptEngine engine) {
59 this.engine = engine;
60 }
61
62 }