Rev 1614 | Rev 1647 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
function Console() { }Console.autocomplete_callbacks = new Array();Console.help_text = new Array();function Console_DoAutocomplete(){var name = arguments[0];//Log("Console_DoAutocomplete(), name=" + name);var result = new Array();if (typeof Console.autocomplete_callbacks[name] != 'undefined'){//Log("calling autocomplete_callback");result = Console.autocomplete_callbacks[name](arguments);}var result_string = "";for (var n = 0; n < result.length; n++){result_string += result[n] + "\n";}return result_string;}function RegisterConsoleCommand(command, autocomplete_callback){var command_string = command.toString();var pos_end = command_string.indexOf("\n") - 1;var pos_start = command_string.indexOf(" ") + 1;var full_name = command_string.substr(pos_start, pos_end - pos_start);var pos_split = full_name.indexOf("(");var name = full_name.substr(0, pos_split);var argument_string = full_name.substr(pos_split + 1);if (argument_string.length > 0){argument_string = argument_string.replace(/,/g, "");argument_string = "<" + argument_string.replace(/ /g, "> <") + ">";}if (Console_RegisterConsoleCommand(name)){Console.help_text[name] = argument_string;if (autocomplete_callback){Console.autocomplete_callbacks[name] = autocomplete_callback;}return true;}return false;}function StandardAutocomplete(){// First argument is the command line splitvar command_line_parts = arguments[0];// command_line_parts[0] == command namevar arg_index = arguments[0].length - 2;// Supplied parameters to completevar args_to_complete = arguments.length - 1;if (0 <= arg_index && arg_index < args_to_complete){return arguments[arg_index + 1];}return new Array();}function help_complete(args){var result = new Array();var arg_index = args.length - 1;if (arg_index == 1) // command name{for (var n in Console.help_text){result.push(n);}}return result;}function help(command_name){if (!command_name){command_name = "help";}if (typeof Console.help_text[command_name] != 'undefined'){var result = "";if (Console.autocomplete_callbacks[command_name]){result += "Argument autocompletion enabled for " + command_name + "\n";}result += "Syntax: " + command_name + " " + Console.help_text[command_name] + "\n";return result;}return "No help for " + command_name + " found\n";}RegisterConsoleCommand(help, help_complete);var prompt_requests = new Array();var prompt_request_counter = 0;function prompt(question, callback, text){var id = prompt_request_counter++;prompt_requests[id] = callback;var prompt = "";if (text){if (text[text.length - 1] != '\n'){text += "\n";}prompt += text;}prompt += "P;" + id + ";" + question + "\n";return prompt;}function Console_PromptResponse(id, response){var result = prompt_requests[id](response);delete prompt_requests[id];return result;}