我正在尝试为httpdomain Sphinx doc扩展定制解析器/lexer。我安装在一个给定的dir中,并将dir添加到系统路径如文件所述。在
然后我编译了Sphinx文档,http被正确地突出显示。在
现在,我需要对分机做个小改动。我从随机改变httpdomain.py文件位于扩展名的dir中,它正确地生成了无效语法的错误。在
接下来,我通过用HTTTP(一个额外的T)替换HTTP令牌来更改lexer。我的想法是看看doc中包含HTTTP的条目是否被高亮显示,而不是HTTP。在
问题是我所做的一切似乎都不会改变输出。HTTP继续被着色,HTTTP被忽略。在
这是lexer中包含我的更改的部分:
tokens = {
'root': [
(r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE)( +)([^ ]+)( +)'
r'(HTTTPS?)(/)(1\.[013])(\r?\n|$)',
bygroups(Name.Function, Text, Name.Namespace, Text,
Keyword.Reserved, Operator, Number, Text),
'headers'),
(r'(HTTTPS?)(/)(1\.[013])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
bygroups(Keyword.Reserved, Operator, Number, Text, Number,
Text, Name.Exception, Text),
'headers'),
(r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
(r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
(r'\r?\n', Text, 'content')
],
'headers': [
(r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
(r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
(r'\r?\n', Text, 'content')
],
'content': [
(r'.+', content_callback)
]
}
注意,“HTTP”被更改为“HTTTP”,因此我希望包含HTTTP的doc中的条目现在是彩色的,但是没有任何更改。在
我在文档缓存中看到了一些问题,所以没有更新文档。在
我还删除了Python创建的名为__pycache__
的文件夹,结果没有改变。我还试着注释掉lexer中的所有标记,没有变化。如果我插入无效语法,那么它将失败。如果语法是正确的,它似乎使用了原始代码而没有我的更改。在
有没有其他我应该清理的地方?在
我对Python完全陌生,所以我有点迷路了。在
注:这个HTTTP只是一个测试。一旦我开始工作,我会做出真正的改变。在
结果发现代码的更改是可见的,但lexer从未使用过,因为Pygments还注册了一个名为html的lexer。所以我用我的:
app.add_lexer('http', HTTPLexer())
替换它,我开始看到我的更改影响到生成的文档。在尝试删除*.pyc文件并重新启动扩展
相关问题 更多 >
编程相关推荐