package se.krka.kahlua.scriptengine; import java.util.Collections; import java.util.ArrayList; import java.util.List; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; public class KahluaEngineFactory implements ScriptEngineFactory { private final List<String> extensions = new ArrayList<String>(); private final List<String> names = new ArrayList<String>(); public KahluaEngineFactory() { extensions.add("lua"); extensions.add("lbc"); names.add("kahlua"); names.add("lua"); } @Override public String getEngineName() { return "kahlua"; } @Override public String getEngineVersion() { return "0.1"; } @Override public List<String> getExtensions() { return extensions; } @Override public String getLanguageName() { return "Lua"; } @Override public String getLanguageVersion() { return "5.1"; } @Override public String getMethodCallSyntax(String obj, String m, String... args) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(obj); stringBuilder.append(":"); stringBuilder.append(m); stringBuilder.append("("); boolean first = true; for (String s: args) { if (first) { first = false; } else { stringBuilder.append(", "); } stringBuilder.append(s); } stringBuilder.append(")"); return stringBuilder.toString(); } @Override public List<String> getMimeTypes() { return Collections.EMPTY_LIST; } @Override public List<String> getNames() { return names; } @Override public String getOutputStatement(String toDisplay) { return "print(" + toDisplay + ")"; } @Override public Object getParameter(String key) { return null; } @Override public String getProgram(String... statements) { StringBuilder builder = new StringBuilder(); for (String s: statements) { builder.append(s).append(";"); } return builder.toString(); } @Override public ScriptEngine getScriptEngine() { return new KahluaEngine(this); } }