Проблемы ввода JavaScript в командной строке при минимизации JavaScript в Gedit
-
07-07-2019 - |
Вопрос
Я хочу немедленно минимизировать мои файлы 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();