Command Line JavaScript Eingabeargumente Probleme während der Verkleinerungs JavaScript in Gedit

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

Frage

Ich möchte meine JavaScript-Dateien sofort in Gedit minify. Ich habe versucht, es über externe Tools Option tun mit jsmin.js Skript. Ich habe Spider Motor installiert. I gespeichert jsmin.js Datei auf /home/mushex/use/js/jsmin.js und erstellt eine neue Datei mit dem Namen js JSMin-low.js im selben Verzeichnis mit Inhalt

#!/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);
}

Es druckt nicht definiert. Zum Debuggen Ich habe Skript geändert nur in Argumente Druckvorgang durchzuführen, und sah, dass die Eingabe ungültig ist (nicht definiert). Quelle der Datei für das Debuggen war

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

Aber wenn ich es in der Kommandozeile renne es Ausgabe korrekt ist. Und über gedit andere js Kommandozeilen-Tools arbeiten normal. Wandernde, warum meine Eingabeargumente nicht vorbei.

Hier sind Einstellungen, die ich für dieses Werkzeug in gedit gesetzt.

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

wird jede Hilfe sehr dankbar Danke.

War es hilfreich?

Lösung

Das Problem ist, dass gedit wird das Dokument in Ihr Programm Standardeingabe zu senden, nicht als Befehlszeilenargument. Die Spider Schale hat eine readline() Funktion, die eine Zeile von stdin liest, aber es hat bisher keine Möglichkeit zu wissen, wenn Sie erreichen EOF.

Wenn Sie mit Spider File Unterstützung kompilieren, könnten Sie tun, ist es wahrscheinlich, aber ich habe nie versucht, dass.

Wenn Sie die Rhino Shell , können Sie Java-Klassen direkt wie folgt verwenden:

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top