代码之家  ›  专栏  ›  技术社区  ›  Grant McLean

应该对自定义指令的参数进行转义吗?

  •  1
  • Grant McLean  · 技术社区  · 8 年前

    我已经为我的一个文档项目创建了一个自定义指令,该项目使用sphinx和restructuredtext构建。指令的用法如下:

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

    这将把xpath表达式呈现为一个简单的代码块,但是添加了一个链接,用户可以单击该链接对示例xml文档执行表达式并查看匹配项( example link ,示例 rendered page )

    我的指令指定它没有内容,接受一个强制参数(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. 或者它工作正常,唯一的问题是我的编辑没有正确地突出显示内容?

    这似乎是一个小问题,但作为一个新手,我觉得突出显示是非常有帮助的。

    1 回复  |  直到 8 年前
        1
  •  1
  •   marbu    8 年前

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

    不,我认为没有对rst指令的参数执行额外的处理。与您的观察结果相匹配:无论您指定什么作为指令的参数,都可以直接通过 self.arguments[0] .

    或者它工作正常,唯一的问题是我的编辑没有正确地突出显示内容?

    是的,似乎是这样。性格 * 在rst中用于强调/斜体,由于某些原因,它在语法突出显示期间得到了更多的关注。

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