2009-09-15 28 views
1

我想立即在Gedit中縮小JavaScript文件。我試圖通過jsmin.js腳本通過外部工具選項來執行此操作。我安裝了SpiderMonkey引擎。我存儲jsmin.js文件在/home/mushex/use/js/jsmin.js和創建一個新的名爲js文件jsmin-low.js在同一目錄與內容命令行JavaScript輸入參數在Gedit中縮小JavaScript時的問題

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

它打印出未定義的。對於調試,我已經將腳本更改爲僅在參數打印操作中執行,並且看到輸入爲空(未定義)。調試文件的來源是

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

但是,當我在命令行運行它的輸出是正確的。並通過gedit其他js命令行工具正常工作。徘徊爲什麼我的輸入參數沒有通過。

這裏是我在gedit中爲這個工具設置的設置。

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

任何幫助,將不勝感激 感謝。

回答

1

問題是,gedit將文檔發送到程序的標準輸入中,而不是作爲命令行參數。 SpiderMonkey shell具有從stdin中讀取一行的readline()函數,但它無法知道何時到達EOF。

如果你編譯的SpiderMonkey支持File,你可以這樣做,但我從來沒有嘗試過。

如果使用Rhino shell,可以直接使用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(); 
+0

在哪兒下載犀牛的殼呢?我的google-fu讓我失望。 – Herms 2009-09-15 19:20:34

+1

Nm,終於找到了它:http://www.mozilla.org/rhino/download.html – Herms 2009-09-15 19:23:30

+0

@Matthew Crumley謝謝兄弟們,如果沒有什麼幫助,我想我會用犀牛做的(其實我不在乎它這麼多,只是印象深刻的如何做到這一點) @Herms來源http://www.mozilla.org/rhino/download.html – 2009-09-15 19:28:07