Beagle
view release on metacpan or search on metacpan
share/public/js/base/jquery.terminal.js view on Meta::CPAN
}
result += (level > 1 ? ',' : '');
// quick hacks below
if (level == 1) {
// fix last comma
result = result.replace(/,([\]}])/g, '$1');
}
// fix comma before array or object
return result.replace(/([\[{]),/g, '$1');
};
// -----------------------------------------------------------------------
// :: HISTORY CLASS
// -----------------------------------------------------------------------
function History(name) {
var enabled = true;
if (typeof name === 'string' && name !== '') {
name += '_';
}
var data = $.Storage.get(name + 'commands');
var bc = new BCycle(data ? eval('(' + data + ')') : ['']);
$.extend(this, {
append: function(item) {
if (enabled && bc.current() != item) {
bc.append(item);
$.Storage.set(name + 'commands', $.json_stringify(bc.data()));
}
},
data: function() {
return bc.data();
},
next: function() {
return bc.right();
},
last: function() {
bc.reset();
},
previous: function() {
return bc.left();
},
clear: function() {
bc = new BCycle();
$.Storage.remove(name + 'commands');
},
enable: function() {
enabled = true;
},
disable: function() {
enabled = false;
}});
}
// -----------------------------------------------------------------------
// :: COMMAND LINE PLUGIN
// -----------------------------------------------------------------------
$.fn.cmd = function(options) {
var self = this;
self.addClass('cmd');
self.append('<span class="prompt"></span><span></span>' +
'<span class="cursor"> </span><span></span>');
var clip = $('<textarea/>').addClass('clipboard').appendTo(self);
if (options.width) {
self.width(options.width);
}
var num_chars; // calculates by draw_prompt
var prompt_len;
var mask = options.mask || false;
var command = '';
var position = 0;
var prompt;
var enabled = options.enabled;
var name, history;
var blink = (function() {
var cursor = self.find('.cursor');
return function(i) {
cursor.toggleClass('inverted');
};
})();
var cursor = self.find('.cursor');
function change_num_chars() {
var W = self.width();
var w = cursor.innerWidth();
num_chars = Math.floor(W / w);
}
function get_splited_command_line(string) {
var first = string.substring(0, num_chars - prompt_len - 1);
var rest = string.substring(num_chars - prompt_len - 1);
return [first].concat(str_parts(rest, num_chars));
}
var redraw = (function(self) {
var cursor = self.find('.cursor');
var before = cursor.prev();
var after = cursor.next();
function draw_cursor_line(string, position) {
if (position == string.length) {
before.html(encodeHTML(string));
cursor.html(' ');
after.html('');
} else if (position === 0) {
before.html('');
//fix for tilda in IE
cursor.html(encodeHTML(string.slice(0, 1)));
//cursor.html(encodeHTML(string[0]));
after.html(encodeHTML(string.slice(1)));
} else {
var before_str = encodeHTML(string.slice(0, position));
before.html(before_str);
//fix for tilda in IE
var c = string.slice(position, position + 1);
//cursor.html(string[position]));
cursor.html(c == ' ' ? ' ' : encodeHTML(c));
if (position == string.lenght - 1) {
after.html('');
} else {
after.html(encodeHTML(string.slice(position + 1)));
}
}
( run in 0.782 second using v1.01-cache-2.11-cpan-84e82930d8c )