命令行highlighter syntaxhighlighter,使用Pygments和widlparser。
bs-highlighter的Python项目详细描述
荧光笔
此项目提取并抽象Bikeshed's语法突出显示功能,供其他工具使用。在
要使用,请将此git repo克隆到您的项目文件夹中, 然后:
importhighlighterhtml,css=highlighter.highlight(elementGoesHere,lang="whatever")
或者,可以直接从命令行调用它, 在stdin上传递一个JSON字符串, 它将通过stdout输出:
^{pr2}$以这种方式调用时,
它将返回一个字符串,其中包含一个带有html
和css
键的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对象。在
- 项目
标签: