使用巴比伦解析器的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:BabylonLexerBabylonHtmlLexer。这个 后者是必需的,因为内置的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}稍有不同的结果$ 雷克瑟

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
试图读取字段“java”。lang.反对安卓。util。一对首先   gradle对java的影响。属性作为任务的输入?   java我的return语句不起作用。我做错了什么?   java通用同步代码块[无对象锁定]   macos Java小程序游戏不能在Mac上运行,即使它可以在PC上运行   java Firebase GeoFire设置位置未在服务中工作   java排序字符串对象   java通过JLabel上传背景图像(jpg)后,如何将图像缩放到它所在的面板上?   java无法连接到jsp中的数据库   java如何在整个ant taskdef操作的执行过程中拥有一个singleton类实例   java如何在按键事件中检查JTtextField中的字符串数字验证器   如何最好地输出大型单行XML文件(使用Java/Eclipse)?   内存不足,Java运行时环境无法在Java应用程序中继续运行   java Hibernate连接错误:组织上的NullPointerException。冬眠hql。阿斯特。HqlSqlWalker。createFromJoinElement   linux将参数从shell脚本传递到java类   java对于接受多个参数的setter是否有类似于@JsonCreator的注释?   java在链表中添加节点