import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import org.faabtech.brainfuck.BrainfuckEngine;
import org.pircbotx.Channel;
import org.pircbotx.PircBotX;
import org.pircbotx.User;
import pl.shockah.ZeroInputStream;
import pl.shockah.shocky.Cache;
import pl.shockah.shocky.ScriptModule;
import pl.shockah.shocky.cmds.Command;
import pl.shockah.shocky.cmds.Parameters;
import pl.shockah.shocky.sql.Factoid;
public class ModuleBrainfuck extends ScriptModule {
protected Command cmd;
public String name() {return "brainfuck";}
public String identifier() {return "bf";}
public void onEnable(File dir) {
cmd = new CmdBrainfuck();
Command.addCommands(this, cmd);
Command.addCommand(this, "bf", cmd);
}
public void onDisable() {
Command.removeCommands(cmd);
}
public String parse(Cache cache, PircBotX bot, Channel channel, User sender, Factoid factoid, String code, String message) {
if (code == null) return "";
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
InputStream is;
if (message == null)
is = new ZeroInputStream();
else
is = new ByteArrayInputStream(message.getBytes());
BrainfuckEngine bfe = new BrainfuckEngine(code.length(),os,is);
bfe.interpret(code);
return os.toString("UTF-8");
} catch (Exception e) {e.printStackTrace();}
return "";
}
public class CmdBrainfuck extends ScriptCommand {
public String command() {return "brainfuck";}
public String help(Parameters params) {
return "brainfuck/bf\nbrainfuck {code} - runs brainfuck code";
}
}
}