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}