PageRenderTime 25ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/modulesrc/ModuleBrainfuck.java

http://github.com/clone1018/Shocky
Java | 54 lines | 48 code | 6 blank | 0 comment | 4 complexity | 0645ff365d556e78f88467f784944cd3 MD5 | raw file
Possible License(s): 0BSD, Apache-2.0
  1. import java.io.ByteArrayInputStream;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import java.io.InputStream;
  5. import org.faabtech.brainfuck.BrainfuckEngine;
  6. import org.pircbotx.Channel;
  7. import org.pircbotx.PircBotX;
  8. import org.pircbotx.User;
  9. import pl.shockah.ZeroInputStream;
  10. import pl.shockah.shocky.Cache;
  11. import pl.shockah.shocky.ScriptModule;
  12. import pl.shockah.shocky.cmds.Command;
  13. import pl.shockah.shocky.cmds.Parameters;
  14. import pl.shockah.shocky.sql.Factoid;
  15. public class ModuleBrainfuck extends ScriptModule {
  16. protected Command cmd;
  17. public String name() {return "brainfuck";}
  18. public String identifier() {return "bf";}
  19. public void onEnable(File dir) {
  20. cmd = new CmdBrainfuck();
  21. Command.addCommands(this, cmd);
  22. Command.addCommand(this, "bf", cmd);
  23. }
  24. public void onDisable() {
  25. Command.removeCommands(cmd);
  26. }
  27. public String parse(Cache cache, PircBotX bot, Channel channel, User sender, Factoid factoid, String code, String message) {
  28. if (code == null) return "";
  29. try {
  30. ByteArrayOutputStream os = new ByteArrayOutputStream();
  31. InputStream is;
  32. if (message == null)
  33. is = new ZeroInputStream();
  34. else
  35. is = new ByteArrayInputStream(message.getBytes());
  36. BrainfuckEngine bfe = new BrainfuckEngine(code.length(),os,is);
  37. bfe.interpret(code);
  38. return os.toString("UTF-8");
  39. } catch (Exception e) {e.printStackTrace();}
  40. return "";
  41. }
  42. public class CmdBrainfuck extends ScriptCommand {
  43. public String command() {return "brainfuck";}
  44. public String help(Parameters params) {
  45. return "brainfuck/bf\nbrainfuck {code} - runs brainfuck code";
  46. }
  47. }
  48. }