package org.jopendocument.dom.template.engine;

import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;

public class RhinoTemplateScriptEngine extends DataModel {
    private Context cx;
    private Scriptable scope;

    public RhinoTemplateScriptEngine() {
        cx = ContextFactory.getGlobal().enterContext();
        scope = cx.initStandardObjects();
    }

    @Override
    public Object eval(String script) {
        return Context.jsToJava(cx.evaluateString(scope, script, "", 1, null), Object.class);
    }

    @Override
    public void put(String key, Object value) {
        Object jsObj = Context.javaToJS(value, scope);
        ScriptableObject.putProperty(scope, key, jsObj);
    }

    @Override
    public DataModel copy() {
        throw new UnsupportedOperationException();
    }

}
