001/* 002 * $Id$ 003 */ 004 005package edu.jas.kern; 006 007 008import java.io.Reader; 009 010import javax.script.AbstractScriptEngine; 011import javax.script.Bindings; 012import javax.script.ScriptContext; 013import javax.script.ScriptEngineFactory; 014import javax.script.SimpleBindings; 015 016import org.python.util.PythonInterpreter; 017 018 019public class PyScriptEngine extends AbstractScriptEngine 020/*implements Invocable, Compilable*/{ 021 022 023 PythonInterpreter pyint = new PythonInterpreter(); 024 025 026 public PyScriptEngine() { 027 super(); 028 //pyint.execfile(this.getClass().getResourceAsStream("/jas.py")); 029 } 030 031 032 public PyScriptEngine(Bindings b) { 033 super(b); 034 //pyint.execfile(this.getClass().getResourceAsStream("/jas.py")); 035 } 036 037 038 @Override 039 public Object eval(Reader r, ScriptContext c) { 040 throw new RuntimeException("eval(Reader r,..) not implemented"); 041 } 042 043 044 @Override 045 public Object eval(String s, ScriptContext c) { 046 //Obejct o = pyint.eval(s); 047 //return pyint.eval(s).__str__().toString(); 048 pyint.exec(s); 049 return null; 050 } 051 052 053 @Override 054 public ScriptEngineFactory getFactory() { 055 return new PyScriptEngineFactory(); 056 } 057 058 059 @Override 060 public Bindings createBindings() { 061 return new SimpleBindings(); 062 } 063 064 065 @Override 066 public String toString() { 067 ScriptEngineFactory sf = getFactory(); 068 return "PyScriptEngine(" + sf.getLanguageName() + ", " + sf.getLanguageVersion() + ")"; 069 } 070 071}