命令行highlighter syntaxhighlighter,使用Pygments和widlparser。

bs-highlighter的Python项目详细描述


荧光笔

此项目提取并抽象Bikeshed's语法突出显示功能,供其他工具使用。在

要使用,请将此git repo克隆到您的项目文件夹中, 然后:

importhighlighterhtml,css=highlighter.highlight(elementGoesHere,lang="whatever")

或者,可以直接从命令行调用它, 在stdin上传递一个JSON字符串, 它将通过stdout输出:

^{pr2}$

以这种方式调用时, 它将返回一个字符串,其中包含一个带有htmlcss键的JSON对象: html值将是标记的HTML,仍然是JSON格式; css值将是一个包含CSS的字符串。在

(见Command-Line Options 或者运行highlighter/__init__.py -h查看所有命令行选项。)


elementGoesHere参数需要是一个HTML块, 使用以下转换转换为JSON:

<p class=foo>text<span>nested text</span></p>
=> becomes =>
["p", {"class":"foo"}, "text", ["span", {}, "nested text"]]

也就是说,每个元素都被编码为一个数组, 第一项是标记名, 第二个是包含属性的对象 (如果没有属性,则仍需要空对象), 剩下的是元素的子元素, 直接文本或其他嵌套元素。在

通常假设根元素是["pre", {}], 但这并不是绝对必要的; 默认样式使用CSS网格, 不依赖于新行的保存。在


支持的语言是everything that Pygments supports, 加上webidl的“webidl”。在


返回值是一个2元组(html, css)html是突出显示的HTML (也被格式化为JSON); css是支持突出显示的附带CSS, 你可以随意使用或更换。在

或者,如果将output=html传递给highlight()函数, html返回值将是一个包含HTML的字符串, 而不是JSON。在

行号或突出显示

您也可以将行号添加到输出的HTML中, 或突出显示特定线条。在

要添加行号, 将lineNumbers=True传递给highlight()。 默认情况下,数字从1开始; 要改变这种情况,请传递lineStart=5或任何您需要的东西。在

要突出显示specific行, 通过lineHighlights=..., 其中...是一个set(),其中包含要突出显示的行号, 或者是一个逗号分隔的字符串,包含行号和/或范围,比如1, 3-5 (相当于set(1, 3, 4, 5))。 同样,它默认假定第一行是第1行, 你可以通过传递lineStart来改变这个。在

可以将这两个选项组合起来进行编号和高亮显示。在

命令行选项

Highlighter有许多命令行选项来定制其操作 (许多灵感来自于它的第一个主要用户, 如果他们看起来奇怪的意识形态)。在

默认为json。在

确定突出显示的输出是否作为JSON编码的HTML返回 (就像输入一样), 或者只是一个普通的HTML字符串。在

如果传递,则将行号添加到输出。在

默认将第一行视为“1”; 与--start结合使用可进行更多自定义。在

告诉处理器哪些行要特别突出显示, 默认情况下,给它们一个较暗的背景来吸引眼球。在

<range>是逗号分隔的行范围列表, 每一个都是一个数字 或者用连字符连接的范围, 像1, 3-5来突出显示第1、3、4和5行。在

突出显示的行将自动编号, 即使--numbers未通过。在

--numbers相同, 默认将第一行视为“1”; 与--start结合使用可进行更多自定义。在

默认为1。在

告诉荧光笔第一行应该被视为什么数字。在

例如,如果您显示的是一个较大文件中的一小段代码, 你可以告诉它代码实际上是从1500行开始的 使用--start=1500, 这样你就可以把节选文件的编号与显示的行相匹配。在

如果传递,输出将是,只是highlig的HTML或CSS赫丁, 而不是包含两者的JSON对象。 没有整体包装JSON对象。在

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

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列