core.js 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. var CLIENT_COMMANDS = (function() {
  2. /** @type {Array<{name:string!, names: Array<string>!, desc: string!, usage: string!, category: string!, exec: Function!}>} */
  3. var commands = [];
  4. return {
  5. getCommand: function(name) {
  6. for (var i =0, nbCmd = commands.length; i < nbCmd; i++)
  7. if (commands[i].names.indexOf(name) !== -1)
  8. return commands[i];
  9. return null;
  10. },
  11. getCommandsStartingWith: function(cmdPrefix) {
  12. var result = [];
  13. commands.forEach(function(cmd) {
  14. for (var i =0, nbNames =cmd.names.length; i < nbNames; i++)
  15. if (cmd.names[i].substr(0, cmdPrefix.length) === cmdPrefix) {
  16. result.push(cmd);
  17. break;
  18. }
  19. });
  20. return result;
  21. },
  22. /** @type {function({name: string!, names: Array<string>!, desc: string!, usage: string!})} */
  23. registerCommand: function(cmdObj) {
  24. cmdObj.category = "client";
  25. cmdObj.exec = cmdObj.exec.bind(cmdObj);
  26. commands.push(/** @type {{name: string!, names: Array<string>!, desc: string!, usage: string!, category: string!, exec: Function!}} */ (cmdObj));
  27. }
  28. };
  29. })();