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.
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;
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 mustInvert = cmdParams['v'] ? true : false;
var start =
var end =
var filtered = cmdPreparePageContent(html.substring(start, end));
var a =
var b = new Array();
for (var i = 0; i < a.length; i++){
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;
}
|