是否应该转义自定义指令的参数?

时间:2018-06-03 06:09:49

标签: python-sphinx restructuredtext

我为我的文档项目创建了一个自定义指令,该指令是使用Sphinx和reStructuredText构建的。该指令使用如下:

.. xpath-try:: //xpath[@expression="here"]

这会将XPath表达式呈现为一个简单的代码块,但添加了一个链接,用户可以单击该链接以针对示例XML文档执行表达式并查看匹配项(example link,示例{{ 3}})。

我的指令指定它没有内容,接受一个必需参数(xpath表达式)并识别几个选项:

class XPathTryDirective(Directive):
    has_content = False
    required_arguments = 1
    optional_arguments = 0
    final_argument_whitespace = True
    option_spec = {
        'filename': directives.unchanged,
        'ns_args': directives.unchanged,
    }

    def run(self):
        xpath_expr = self.arguments[0]
        node = xpath_try(xpath_expr, xpath_expr)
        ...
        return [node]

除了如果XPath表达式包含*之外,所有似乎完全按预期工作,那么我的编辑器(gVim)中的语法高亮显示变得非常混乱。如果我用反斜杠转义*,那么这会让我的编辑感到高兴,但输出中会出现反斜杠。

我的问题是:

  1. 指令的参数中的特殊字符是否应该被转义?
  2. 如果是这样,指令API是否提供了获取非转义版本的方法?
  3. 或者它工作正常,唯一的问题是我的编辑器未能正确突出显示内容吗?
  4. 这似乎是一个小问题,但由于我是第一个新手,我发现突出显示非常有帮助。

1 个答案:

答案 0 :(得分:1)

  

指令的参数中的特殊字符是否应该被转义?

不,我认为没有对第一个指令的参数进行额外的处理。哪个符合您的观察结果:无论您指定什么作为指令的参数,您都可以通过self.arguments[0]直接获取。

  

或者它是否正常工作,唯一的问题是我的编辑器未能正确突出显示内容?

是的,似乎是这种情况。字符*在第一次用于强调/斜体,并且由于某种原因它在语法突出显示期间得到更多关注。

这意味着这里的解决方案是调整或修复restructuredtext的vim语法文件。