GeditでJavaScriptを縮小する際のコマンドラインJavaScript入力引数の問題
-
07-07-2019 - |
質問
JavaScriptファイルをGeditですぐに縮小したい。 jsmin.js スクリプトを使用して、外部ツールオプションで実行しようとしました。 SpiderMonkeyエンジンをインストールしています。 /home/mushex/use/js/jsmin.js に jsmin.js ファイルを保存し、 jsmin-low.js という名前の新しいjsファイルを作成しましたem>コンテンツと同じディレクトリ内
#!/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();
所属していません StackOverflow