= Changed lua plugins to run with arrays of output.

This commit is contained in:
Matthew Cech
2019-05-20 15:21:23 -07:00
parent fd847b49b6
commit 1df71ef61d
3 changed files with 40 additions and 8 deletions
+29 -2
View File
@@ -4,10 +4,13 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Vector;
import java.util.stream.Stream;
import org.luaj.vm2.Globals;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
import org.luaj.vm2.lib.jse.JsePlatform;
// To promote flexibility, plugins are lua file with predefined callbacks.
@@ -45,14 +48,38 @@ public class Plugin
}
}
public String Run(String args, PluginUser user)
public List<String> Run(String args, PluginUser user)
{
List<String> outputs = new Vector<String>();
try
{
LuaValue res = func_plugin.call(LuaValue.valueOf(args), user.AsLua());
if(!res.isnil())
return res.toString();
{
if(res.istable())
{
while(true)
{
LuaValue key = LuaValue.NIL;
while (true)
{
Varargs n = res.next(key);
key = n.arg1();
if (key.isnil())
break;
LuaValue value = n.arg(2);
outputs.add(value.toString());
}
}
}
else
{
outputs.add(res.toString());
}
}
}
catch(Exception e)
{