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

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

Вопрос

Я хочу немедленно минимизировать мои файлы 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);
}

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

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

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

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

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

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

Это было полезно?

Решение

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

Если вы скомпилируете 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top