Problemi relativi agli argomenti di input JavaScript della riga di comando durante la riduzione di JavaScript in Gedit

StackOverflow https://stackoverflow.com/questions/1428428

Domanda

Voglio minimizzare i miei file JavaScript immediatamente in Gedit. Ho provato a farlo tramite l'opzione di strumenti esterni con lo script jsmin.js . Ho installato il motore SpiderMonkey. Ho archiviato il file jsmin.js in /home/mushex/use/js/jsmin.js e ho creato un nuovo file js chiamato jsmin-low.js nella stessa directory con contenuto

#!/usr/bin/js 

load('/home/mushex/use/js/jsmin.js');

var body = arguments[0],
    result = jsmin('', body, 1);
if (result) {
    print(result);
} else {
    print(body);
}

Stampa non definito. Per il debug ho modificato lo script per eseguire solo nell'azione di stampa degli argomenti e ho visto che l'input è null (non definito). La fonte del file per il debug era

#!/usr/bin/js 
print(arguments[0]);

Ma quando lo eseguo nella riga di comando, l'output è corretto. E tramite gedit altri strumenti da riga di comando js funzionano normalmente. Vagando perché i miei argomenti di input non passano.

Ecco le impostazioni che ho impostato per questo strumento in gedit.

Impostazioni http://imagebin.org/index.php?mode=image& id = 63960

Qualsiasi aiuto sarà molto apprezzato Grazie.

È stato utile?

Soluzione

Il problema è che gedit sta inviando il documento nell'input standard del programma, non come argomento della riga di comando. La shell SpiderMonkey ha una funzione readline () che legge una riga da stdin, ma non ha modo di sapere quando si raggiunge EOF.

Se compili SpiderMonkey con il supporto File , probabilmente potresti farlo, ma non l'ho mai provato.

Se usi la Rhino shell , puoi usare le classi Java direttamente in questo modo:

function readStdin() {
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System["in"]));
    var lines = [];
    var line;
    while ((line = stdin.readLine()) !== null) {
        lines.push(line);
    }
    return lines.join("\n");
}

var body = readStdin();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top