Как я могу использовать JSBeautify из командной строки?
Мне нравится http://jsbeautifier.org/, и я вижу, что у них есть репозиторий github со своим кодом.
В файле readme есть два примера использования этого инструмента через командную строку:
import jsbeautifier
res = jsbeautifier.beautify('your javascript string')
res = jsbeautifier.beautify_file('some_file.js')
а также:
opts = jsbeautifier.default_options()
opts.indent_size = 2
res = jsbeautifier.beautify('some javascript', opts)
Как я могу включить это в сценарий (myjsbeautify.py
) так что он может принять либо stdin
или аргумент (имя файла) и вывод в stdout
? Я также хочу использовать опцию keep array indentation
,
Желаемые синтаксисы
cat ugly.js | myjsbeautify.py
или же
myjsbeautify.py ugly.js
4 ответа
Проверьте этот пост об использовании JSBeautify с Textmate. Там есть несколько хороших инструкций о том, как установить его в вашей системе. В Mac OS X я использовал:
cd /tmp
git clone https://github.com/einars/js-beautify.git
cd js-beautify/python
python setup.py install
Тогда вы можете просто использовать js-beautify /path/to/filename.js
чтобы он бежал.
Ваши примеры для использования в качестве библиотеки, а не командной строки. Если вы пытаетесь создать скрипт самостоятельно, который может принимать аргументы и передавать его в JSBeautifier, вам следует взглянуть на модуль argparse. У него есть несколько хороших примеров, чтобы помочь вам. Пример из документов:
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
... default=sys.stdin)
>>> parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
... default=sys.stdout)
>>> parser.parse_args(['input.txt', 'output.txt'])
Namespace(infile=<_io.TextIOWrapper name='input.txt' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='output.txt' encoding='UTF-8'>)
>>> parser.parse_args([])
Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)
РЕДАКТИРОВАТЬ: вы также можете использовать getopt, который используется jsbeautifier.py
сам. Если вы просто хотите использовать jsbeautifier.py
в качестве инструмента командной строки прочитайте usage
функция из исходного кода.
В общем, вы можете использовать fileinput
модуль, который позволит вам читать либо из стандартного ввода, либо из файлов, названных в позиционных аргументах.
я только что сделал
pip install jsbeautify
и он добавил
js-beautify
на мой путь (
/usr/local/bin/js-beautify
).
Вы можете использовать его так, как и ожидаете:
js-beautify --keep-array-indentation file.json > file.pretty.json
И используйте help, чтобы проверить наличие дополнительных аргументов:
js-beautify --help