2

我喜欢jsbeautifier.org,我看到他们的代码有一个github存储库。

自述文件有两个示例说明如何通过命令行使用此工具:

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

4 回答 4

6

查看这篇关于将 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它来运行它。

于 2012-10-02T13:58:27.860 回答
0

您的示例是用作库而不是命令行。如果您尝试自己创建一个可以接受参数并将其传递给 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'>)

编辑:您也可以使用自己使用的getoptjsbeautifier.py。如果您只想jsbeautifier.py用作命令行工具,请usage从源代码中读取函数。

于 2012-10-02T12:24:54.387 回答
0

通常,您可以使用该fileinput模块,它允许您从标准输入或位置参数中命名的文件中读取。

于 2012-10-02T15:04:49.730 回答
0

我刚刚做了pip install jsbeautify,它添加js-beautify到我的路径(/usr/local/bin/js-beautify)。

您可以按预期使用它:

js-beautify --keep-array-indentation file.json > file.pretty.json

并使用帮助来检查更多参数:

js-beautify --help
于 2021-06-23T20:14:07.110 回答