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
44 if (object instanceof RubyObject) {
45 Invocable i = (Invocable) engine;
46
47 RubyObject rubyObject = (RubyObject) object;
48 if (rubyObject.getMetaClass().getName().equals("DateTime")) {
49 try {
50 object = i.invokeMethod(object, "strftime", "%Y-%m-%d");
51 } catch (Exception e) {
52 throw new RuntimeException(e);
53 }
54 }
55 }
56
57 return object;
58 }
59
60 @Override
61 public void setScriptEngine(ScriptEngine engine) {
62 this.engine = engine;
63 }
64
65 }