質問

JavaScriptファイルをGeditですぐに縮小したい。 jsmin.js スクリプトを使用して、外部ツールオプションで実行しようとしました。 SpiderMonkeyエンジンをインストールしています。 /home/mushex/use/js/jsmin.js jsmin.js ファイルを保存し、 jsmin-low.js コンテンツと同じディレクトリ内

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

未定義で出力します。デバッグのために、引数の印刷アクションでのみ実行するようにスクリプトを変更し、入力がnull(未定義)であることを確認しました。デバッグ用のファイルのソースは

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

しかし、コマンドラインで実行すると、出力は正しいです。また、geditを介して、他のjsコマンドラインツールは正常に動作しています。入力引数が渡されない理由をさまよう。

geditでこのツールに設定した設定は次のとおりです。

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

どんな助けも大歓迎です ありがとう。

役に立ちましたか?

解決

問題は、geditがドキュメントをコマンドライン引数としてではなく、プログラムの標準入力に送信していることです。 SpiderMonkeyシェルには、stdinから行を読み取る readline()関数がありますが、EOFに到達したことを知る方法はありません。

File をサポートしてSpiderMonkeyをコンパイルする場合、おそらく実行できますが、私は試したことはありません。

Rhinoシェルを使用する場合、次のようにJavaクラスを直接使用できます。

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top