| /* | |
| * $Id: LuaBindings.java 38 2012-01-04 22:44:15Z andre@naef.com $ | |
| * See LICENSE.txt for license terms. | |
| */ | |
| package com.naef.jnlua.script; | |
| import javax.script.Bindings; | |
| import com.naef.jnlua.LuaState; | |
| import com.naef.jnlua.util.AbstractTableMap; | |
| /** | |
| * Lua bindings implementation conforming to JSR 223: Scripting for the Java | |
| * Platform. | |
| */ | |
| class LuaBindings extends AbstractTableMap<String> implements Bindings { | |
| // -- State | |
| private LuaScriptEngine scriptEngine; | |
| // -- Construction | |
| public LuaBindings(LuaScriptEngine scriptEngine) { | |
| this.scriptEngine = scriptEngine; | |
| } | |
| // -- AbstractTableMap methods | |
| @Override | |
| protected void checkKey(Object key) { | |
| super.checkKey(key); | |
| if (!(key instanceof String)) { | |
| throw new IllegalArgumentException("key must be a string"); | |
| } | |
| if (((String) key).length() == 0) { | |
| throw new IllegalArgumentException("key must not be empty"); | |
| } | |
| } | |
| @Override | |
| protected boolean filterKeys() { | |
| return true; | |
| } | |
| @Override | |
| protected boolean acceptKey(int index) { | |
| return getLuaState().isString(index) | |
| && getLuaState().toString(index).length() > 0; | |
| } | |
| @Override | |
| protected String convertKey(int index) { | |
| return getLuaState().toString(index); | |
| } | |
| // -- LuaProxy methods | |
| @Override | |
| public LuaState getLuaState() { | |
| return scriptEngine.getLuaState(); | |
| } | |
| @Override | |
| public void pushValue() { | |
| getLuaState().rawGet(LuaState.REGISTRYINDEX, LuaState.RIDX_GLOBALS); | |
| } | |
| // -- Package-private methods | |
| /** | |
| * Returns the script engine. | |
| */ | |
| LuaScriptEngine getScriptEngine() { | |
| return scriptEngine; | |
| } | |
| } |