我试图为httpdomain Sphinx doc扩展程序自定义解析器/词法分析器。我安装在给定的目录中,并将dir添加到sys.path中,如文档中所述。
然后我编译了Sphinx doc并正确地突出显示了http。
现在,我需要对扩展程序进行一些小改动。我首先对扩展程序的目录中的httpdomain.py文件进行了随机更改,这正确地导致了无效语法的错误。
接下来,我通过用HTTTP(一个额外的T)替换HTTP令牌来改变词法分析器。我的想法是看看现在包含HTTTP的文档中的条目是否突出显示而不是HTTP。
问题在于,我所做的一切似乎都没有改变输出。 HTTP继续变色,并忽略HTTTP。
以下是包含我的更改的词法分析器部分:
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文本进行了更改,看到它们已在页面中更新,因此没有缓存问题。
我还删除了一个名为__pycache__
的Python文件夹,但没有对结果进行任何更改。我也试着评论词法分析器中的所有标记,没有变化。如果我插入无效语法,则失败。如果语法正确,似乎它使用原始代码而没有我的更改。
我应该清理其他缓存吗?
我对Python完全陌生,所以我在这里有点迷失。
PS:这个HTTTP只是一个测试。一旦我开始工作,我就会做出真正的改变。答案 0 :(得分:1)
事实证明代码更改正在被看到,但是lexer从未被使用过,因为Pygments也注册了一个名为html的词法分析器。所以我用我的app.add_lexer('http', HTTPLexer())
替换了它,我开始看到我的更改会影响生成的文档。
答案 1 :(得分:-1)
尝试删除* .pyc文件并重新启动扩展程序