There are 1 previous version of this script.
// ==UserScript==
// @name fitnesse_edit_utils
// @namespace darrinholst.com
// @include *?edit
// ==/UserScript==
(function() {
var jQueryLoaded = (function() {
var TEXTAREA = "textarea.pageContent";
var set_columns_on = function(textarea) {
var max_length = 100;
$.each(textarea.attr('value').split("\n"), function() {
if(this.length > max_length) {
max_length = this.length;
}
});
textarea.attr('cols', max_length);
}
var is_table_row = function(line) {
return line.indexOf('|') == 0;
}
var split_row = function(line) {
var parts = $.trim(line).split('|');
parts = parts.slice(1, parts.length - 1);
for(var i = 0, j = parts.length; i < j; i++) {
parts[i] = $.trim(parts[i]);
}
return parts;
}
var right_pad = function(value, length) {
var padded = value;
for(var i = 0, j = length - value.length; i < j; i++) {
padded += " ";
}
return padded;
}
var get_max_column_widths_of = function(table) {
widths = [];
$.each(table, function() {
var parts = split_row(this);
$.each(parts, function(index, value) {
if(widths.length <= index) {
widths.push(value.length)
}
else if(value.length > widths[index]) {
widths[index] = value.length;
}
});
});
return widths;
}
var format_table = function(table) {
var formatted = "";
var widths = get_max_column_widths_of(table);
$.each(table, function() {
formatted += "| ";
var parts = split_row(this);
$.each(parts, function(index, value) {
formatted += right_pad(value, widths[index]) + " | ";
});
formatted += "\n";
});
return formatted;
}
var format_content = function(content) {
var formatted = "";
var current_table = [];
var current_number_of_columns = 0;
var lines = content.split("\n");
$.each(lines, function(){
if(is_table_row(this)) {
var number_of_columns = split_row(this).length
if(current_table.length == 0 || current_number_of_columns == number_of_columns) {
current_table.push(this);
current_number_of_columns = number_of_columns;
return true;
}
}
formatted += format_table(current_table);
current_table = [];
if(is_table_row(this)) {
current_table.push(this);
current_number_of_columns = split_row(this).length;
}
else {
formatted += this + "\n";
}
});
formatted += format_table(current_table);
return formatted.slice(0, formatted.length - 1);
}
var control_shift_F = function() {
$(TEXTAREA).attr('value', format_content($(TEXTAREA).attr('value')));
set_columns_on($(TEXTAREA));
}
var key_pressed = function(e) {
if(e.ctrlKey) {
if(e.which == 70) { // F
control_shift_F();
}
}
}
return function() {
set_columns_on($(TEXTAREA));
$(document).keypress(key_pressed);
}
})();
var waitForjQueryToBeLoaded = function() {
if(typeof unsafeWindow.jQuery == 'undefined') {
window.setTimeout(waitForjQueryToBeLoaded,100);
}
else {
$ = unsafeWindow.jQuery;
jQueryLoaded();
}
}
var loadCss = function() {
var css = document.createElement('style');
css.type = 'text/css';
css.innerHTML = 'textarea { width: inherit; } '
document.getElementsByTagName('head')[0].appendChild(css);
}
var loadjQuery = function() {
var js = document.createElement('script');
js.type = 'text/javascript';
js.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(js);
waitForjQueryToBeLoaded();
}
loadCss();
loadjQuery();
})();
