使用巴比伦解析器的pygments的javascript词汇表
pygments-lexer-babylon的Python项目详细描述
用于pygments的javascript lexer,它使用巴比伦解析器
警告!
Node.js必须安装才能使用此软件包。设定环境 变量PYGMENTS_NODE_COMMAND指向用于运行节点的命令。 默认值是nodejs。如果以下命令有效,则 可能可以:
nodejs -v
为什么?
pygments不能正确地突出显示新的和有光泽的javascript (特别是jsx)。直到所有这些特性在 pygments,您可以使用此包作为回退。而且,这很有趣 尝试各种技术:wink:。
安装
除了Node.jsdependency:
pip install pygments-lexer-babylon
这将为您安装Pygments(>;=2.0),因此如果需要 在旧版本上,建议使用virtualenv。(或使用 docker…)
用法
包的可导入名称:pygmentslexerbabylon。它 提供两个lexer:BabylonLexer和BabylonHtmlLexer。这个 后者是必需的,因为内置的HtmlLexer硬编码 在<script>标记之间的JavascriptLexer的。
如果你有“手动”控制哪个雷克萨斯使用,做一些像 这个:
frompygmentsimporthighlightfrompygments.formattersimportHtmlFormatterfrompygmentslexerbabylonimportBabylonLexerlexer=BabylonLexer()# You select it manually...formatter=HtmlFormatter(linenos=True,cssclass="source")code='<ReactComponent/>'result=highlight(code,lexer,formatter)
在某些情况下,您无法控制选定的lexer。让我们 比方说,使用markdown,结果是使用这样的代码:
frompygments.lexersimportget_lexer_by_name,guess_lexertry:lexer=get_lexer_by_name(self.lang)exceptValueError:try:lexer=guess_lexer(self.src)exceptValueError:lexer=get_lexer_by_name('text')
在本例中,对javascript文件和 htmlx用于HTML文件。
如果使用pygmentize,则以上所有操作都有效:
$ pygmentize -l jsx myreact.js # Note the extension is not jsx
$ pygmentize myreact.jsx
$ pygmentize -l htmlx htmlwithjsx.html
$ pygmentize htmlwithjsx.htmlx
有问题
- 它比Pygments… 慢一点
- 对于非常大的文件可能会失败(但0.5 MB对我有效)
- 产生与原始^{tt7}稍有不同的结果$ 雷克瑟