Utente:Salvatore Ingala/commandline.js: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
versione 2.1
Riga 4:
 
/*
Commandline versione 2.01
Scritto da [[Utente:Salvatore Ingala]]; contiene alcuni spezzoni di codice di Timendum e Jalo.
 
Riga 284:
//Comandi
//cmd['nome comando'] = [funzione, 'commento'];
if (typeof cmd == 'undefined') cmd = new Object();
cmd['a'] = [cmd_a, 'Da aiutare; richiede motivo e argomento'];
cmd['c'] = [cmd_c, 'Da aiutare; richiede motivo e argomento'];
Riga 328:
cmd['div'] = [cmd_div, 'Divisione intera; richiede la variabile di destinazione e il valore/nome del divisore'];
cmd['mod'] = [cmd_mod, 'Resto della divisione intera; richiede la variabile di destinazione e il valore/nome del divisore'];
 
cmd['sleep'] = [cmd_sleep, 'Interrompe l\'esecuzione dello script per un intervallo di tempo; richiede la durata in millisecondi'];
 
cmd['grep'] = [cmd_grep, 'Lascia solo le righe che soddisfano una certa RegExp'];
cmd['uniq'] = [cmd_uniq, 'Lascia solo la prima fra le righe che matchano una certa RegExp'];
 
cmd['runscript'] = [cmd_runscript, 'Esegue uno script'];
 
cmd['unsafe'] = [cmd_unsafe, 'Richiede all\'utente di passare alla modalità unsafe.']
 
//cmd['_rv'] = [cmd_restorevar, 'Rispristina il valore di una variabile. Per usi interni'];
 
cmdIsSafe = new Object();
cmdIsSafe['a'] = true;
cmdIsSafe['c'] = true;
cmdIsSafe['e'] = true;
cmdIsSafe['p'] = true;
cmdIsSafe['w'] = true;
cmdIsSafe['s'] = true;
cmdIsSafe['t'] = true;
cmdIsSafe['o'] = true;
cmdIsSafe['categorizzare'] = true;
cmdIsSafe['unire'] = true;
cmdIsSafe['purge'] = true;
cmdIsSafe['fixformat'] = true;
cmdIsSafe['replace'] = true;
cmdIsSafe['benvenuto'] = true;
 
cmdIsSafe['preview'] = true;
cmdIsSafe['diff'] = true;
 
cmdIsSafe['goto'] = true;
cmdIsSafe['setvar'] = true;
cmdIsSafe['process'] = true;
cmdIsSafe['processn'] = true;
cmdIsSafe['insertbefore'] = true;
cmdIsSafe['insertafter'] = true;
cmdIsSafe['setsummary'] = true;
cmdIsSafe['setminor'] = true;
cmdIsSafe['prompt'] = true;
cmdIsSafe['alert'] = true;
cmdIsSafe['skip'] = true;
cmdIsSafe['label'] = true;
cmdIsSafe['jump'] = true;
cmdIsSafe['stop'] = true;
cmdIsSafe['ifvoidpage'] = true;
cmdIsSafe['iftrue'] = true;
cmdIsSafe['nop'] = true;
cmdIsSafe['add'] = true;
cmdIsSafe['sub'] = true;
cmdIsSafe['mul'] = true;
cmdIsSafe['div'] = true;
cmdIsSafe['mod'] = true;
 
cmdIsSafe['sleep'] = true;
 
cmdIsSafe['grep'] = true;
cmdIsSafe['uniq'] = true;
 
cmdIsSafe['unsafe'] = true;
cmd['_rv'] = [cmd_restorevar, 'Rispristina il valore di una variabile. Per usi interni'];
 
 
Riga 393 ⟶ 446:
if(typeof(title) == 'undefined') title = cmdGetPageTitle();
 
var c = "";
 
c += cmdSafeMode ? '!sm#' : '!um#';
if (typeof(cmd_savevars) != 'undefined') for(x in cmd_savevars)
c += "_rv#" + x + "#" + cmd_vars[x] + "#"; //rimane un # in più
Riga 815 ⟶ 871:
 
cmd_vars[varname] = "" + (parseInt(cmd_vars[varname]) % parseInt(n));
}
 
function cmd_sleep(){
var re = parseInt(cmdGetArg("Intervallo:"));
if (!isNaN(re)){
var c = escape(cmdReencodeCmdLine());
setTimeout('cmdRunCommand(unescape("' + c + '"));', re);
}
cmd_stop();
}
 
//Codice in comune per cmd_grep e cmd_uniq
function cmdPreparePageContent(text){
return text.replace(/\n/g, "!ACCAPOOOOOO!") //TODO: così è brutto
.replace(/<span[^>]*id="RC[^>]*>(.*?)<\/span>/gm, "$1")
.replace(/<div id="RC[^>]*>(.*?)<\/div>/gm, "$1")
.replace(/<a href="javascript:toggleVisibility[^>]*>/g, "")
.replace(/><li/g, ">\n<li") //porta sempre a capo i <li>
.replace(/><img src=/g, ">\n<img src=") //e anche le immagini
.replace(/!ACCAPOOOOOO!/g, "\n");
}
 
function cmd_grep(){
var re = cmdGetArg("Regular expression:");
var contentregexp = document.getElementByIdnew RegExp('bodyContent're);
var mustInvert = cmdParams['v'] ? true : false;
var html = content.innerHTML;
var start = html.indexOf("<!-- start content -->") + "<!-- start content -->".length;
var end = html.indexOf("<!-- end content -->");
var filtered = html.substring(start, end);
filtered = filtered.replace(/\n/g, "!ACCAPOOOOOO!");
filtered = filtered.replace(/<span[^>]*id="RC[^>]*>(.*?)<\/span>/gm, "$1");
filtered = filtered.replace(/<div id="RC[^>]*>(.*?)<\/div>/gm, "$1");
filtered = filtered.replace(/<a href="javascript:toggleVisibility[^>]*>/g, "");
filtered = filtered.replace(/><li/g, ">\n<li"); //porta sempre a capo i <li>
filtered = filtered.replace(/><img src=/g, ">\n<img src="); //e anche le immagini
filtered = filtered.replace(/!ACCAPOOOOOO!/g, "\n");
 
var acontent = filtereddocument.splitgetElementById("\n"'bodyContent');
var bhtml = new Array()content.innerHTML;
 
for (var i = 0; i < a.length; i++){
var start = if ((a[i]html.indexOf("<li!-- start content -->") ==+ 0)||"<!-- start content -->".length;
var end = (a[i]html.indexOf("<img")!-- ==end 0)content -->"){;
 
if (a[i].match(new RegExp(re)))
var filtered = cmdPreparePageContent(html.substring(start, end));
b.push(a[i]);
var a = } else bfiltered.pushsplit(a[i]"\n");
var b = new Array();
}
for (var i = 0; i < a.length; i++){
content.innerHTML = html.substring(0, start) + b.join("\n") + html.substring(end);
if ((a[i].indexOf("<li") == 0)||
(a[i].indexOf("<img") == 0)){
var res = regexp.test(a[i]);
if (mustInvert) res = res ? false : true;
if (res) b.push(a[i]);
} else b.push(a[i]);
}
content.innerHTML = html.substring(0, start) + b.join("\n") + html.substring(end);
}
 
function cmd_uniq(){
var re = cmdGetArg("Regular expression:");
var regexp = new RegExp(re);
var mustInvert = cmdParams['v'] ? true : false;
 
var content = document.getElementById('bodyContent');
var html = content.innerHTML;
 
var start = html.indexOf("<!-- start content -->") + "<!-- start content -->".length;
var end = html.indexOf("<!-- end content -->");
 
var filtered = cmdPreparePageContent(html.substring(start, end));
 
var a = filtered.split("\n");
var b = new Array();
 
var seen = new Object();
 
for (var i = 0; i < a.length; i++){
if ((a[i].indexOf("<li") == 0)||
(a[i].indexOf("<img") == 0)){
var m = regexp.exec(a[i]);
if (m == null)
b.push(a[i]);
else if (!seen[m[0]]){
seen[m[0]] = true;
b.push(a[i]);
}
} else b.push(a[i]);
}
content.innerHTML = html.substring(0, start) + b.join("\n") + html.substring(end);
}
 
function cmd_unsafe(){
if ((cmdSafeMode) && !confirm('Lo script in esecuzione nella commandline ha richiesto di passare alla modalità Unsafe.\n' +
'In modalità Unsafe lo script è in grado, se richiesto, di eseguire operazioni di salvataggio su Wikipedia\n\n' +
'Premere OK solo se si è sicuri di voler continuare.'))
cmd_stop();
else
cmdSafeMode = false; //disattiva la Safe Mode
}
 
Riga 888 ⟶ 1 003:
}
 
function cmdRunCommand(command, mustprocess, safemode){
if ((command == null)||(command == "")) return;
var commandline = command;
 
if (safemode) cmdSafeMode = true; else cmdSafeMode = false;
 
//WARNING: variabile globale
Riga 918 ⟶ 1 035:
 
command = cmdTrim(command);
 
//Modifiers
var params = command.split("/");
command = params[0];
cmdParams = new Object();
for(var i = 1; i < params.length; i++){
var eqpos = params[i].indexOf("=");
if (eqpos != -1)
cmdParams[params[i].substring(0, eqpos)] = params[i].substring(eqpos+1);
else
cmdParams[params[i]] = true;
}
 
if (cmd[command] != null){
//alert("Comando: " + command);
if (cmdSafeMode && (cmdIsSafe[command] !== true)) {
alert("Comando " + command + " non autorizzato in safe mode.");
cmd_stop(); return;
}
cmd[command][0](command);
continue;
Riga 926 ⟶ 1 059:
//Cerchiamo se è prefisso univoco di un comando
var completed = cmdAutoComplete1(cmd, command, true)
if ((completed != 0)&&(completed != -1)){
if (cmdSafeMode && (cmdIsSafe[completed] !== true)) {
alert("Comando " + completed + " non autorizzato in safe mode.");
cmd_stop(); return;
}
cmd[completed][0](); //tutto a posto, eseguiamo
} else{
alert("Comando sconosciuto: " + command + ". Ignoro e continuo.");
}
}
}
Riga 967 ⟶ 1 105:
//AutoRun via URL
if (cmdGetParam("fakeaction") == "runcommand"){
var commandline = unescape(cmdGetParam("command"));
cmdRunCommand(commandline, true, true);
}
 
Riga 975 ⟶ 1 113:
var title = cmdGetCookie("cmdAutoRunPage"+i);
var commandline = cmdGetCookie("cmdAutoRunCommand"+i);
var sm = commandline.substring(0, 4); //safe mode?
commandline = commandline.substring(4);
 
if (cmdGetPageTitle() == title){
cmdDeleteCookie("cmdAutoRunPage"+i);
cmdDeleteCookie("cmdAutoRunCommand"+i);
cmdRunCommand(commandline, false, sm == '!sm#');
break;
}