3.2 KiB
#jq-console
A simple jQuery terminal plugin written in CoffeeScript.
This project was spawned because of our need for a simple web terminal plugin for the jsREPL project. It tries to simulate a low level terminal by providing (almost) raw input/output streams as well as input and output states.
##Tested Browsers
The plugin has been tested on the following browsers:
- IE 8
- Chrome 10
- Firefox 3.6
- Safari 4
- Opera 10
##Getting Started
###Instantiating
var jqconsole = $(div).jqconsole(welcomeString);
divis the div element or selector.welcomeStringis the string to be shown when the terminal is first rendered.
###Configuration
There isn't much initial configuration needed, because the user must supply options and callbacks with each state change. The only config method is used to create custom shortcuts:
-
jqconsole.RegisterShortcut: Registers a callback for a keyboard shortcut. It takes two arguments:-
int keyCode: The code of the key pressing which (when Ctrl is held) will trigger this shortcut. -
function callback: A function called when the shortcut is pressed; "this" will point to the JQConsole object.
Example:
// Ctrl+R: resets the console. jqconsole.RegisterShortCut(82, function() { this.Reset(); }); -
##Usage
Unlike most terminal plugins, jq-console gives you complete low-level control over the execution; you have to call the appropriate methods to start input or output:
-
jqconsole.Input: Asks user for input. It takes three arguments:-
bool history_enabled: Whether this input should use history. If true, the user can select the input from history, and their input will also be added as a new history item. -
function result_callback: A function called with the user's input when the user presses Enter and the input operation is complete. -
function multiline_callback: If specified, this function is called when the user presses Enter to check whether the input should continue to the next line. If this function returns a falsy value, the input operation is completed. Otherwise, input continues and the cursor moves to the next line.
Example:
jqconsole.Input(true, function(input) { alert(input); }, function (input) { return /\\$/.test('asdasd \\'); }); -
-
jqconsole.Write: Writes the given text to the console in a<span>, with an optional class. This is used for output and writing prompt labels. It takes two arguments:-
string text: The text to write. -
string cls: The class to give the span containing the text. Optional.
Examples:
jqconsole.Write('>>>', 'prompt') jqconsole.Write(output, 'output') jqconsole.Write(err.message, 'error') -
-
jqconsole.SetPromptTextSets the text currently in the input prompt. Takes only one parameter:string text: The text to put in the prompt.
Examples:
jqconsole.SetPromptText('ls') jqconsole.SetPromptText('print [i ** 2 for i in range(10)]')
##Contributors