Проблемы с вводом аргументов командной строки JavaScript при минификации JavaScript в Gedit

Я хочу немедленно минимизировать файлы JavaScript в Gedit. Я попытался сделать это с помощью опции внешних инструментов с помощью скрипта jsmin.js. У меня установлен движок SpiderMonkey. Я сохранил файл jsmin.js в папке /home/mushex/use/js/jsmin.js и создал новый файл 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);
}

Выводит undefined. Для отладки я изменил сценарий, чтобы он выполнялся только в действии печати аргументов, и увидел, что ввод равен нулю (не определен). Источник файла для отладки был

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

Но когда я запускаю его в командной строке, вывод правильный. И через gedit другие инструменты командной строки js работают нормально. Блуждание, почему мои входные аргументы не проходят.

Вот настройки, которые я установил для этого инструмента в gedit.

Настройки http://imagebin.org/index.php?mode=image&id=63960

Любая помощь будет принята с благодарностью Спасибо.


person Mushex Antaranian    schedule 15.09.2009    source источник


Ответы (1)


Проблема в том, что gedit отправляет документ в стандартный ввод вашей программы, а не в качестве аргумента командной строки. В оболочке SpiderMonkey есть функция readline(), которая считывает строку со стандартного ввода, но у нее нет способа узнать, когда вы достигаете конца строки.

Если вы скомпилируете SpiderMonkey с поддержкой File, вы, вероятно, сможете это сделать, но я никогда этого не пробовал.

Если вы используете оболочку 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();
person Matthew Crumley    schedule 15.09.2009
comment
Где скачать оболочку Rhino? Мой гугл-фу меня подводит. - person Herms; 15.09.2009
comment
@Matthew Crumley Спасибо, чувак, если ничего не поможет, думаю, я сделаю это с Rhino (на самом деле мне все равно, просто впечатлен, как это сделать) @Herms Источники здесь mozilla.org/rhino/download.html - person Mushex Antaranian; 15.09.2009