Я создал пользовательскую директиву для моего проекта документации, который построен с использованием Sphinx и reStructuredText.Директива используется следующим образом:
.. xpath-try:: //xpath[@expression="here"]
Это сделает выражение XPath простым блоком кода, но с добавлением ссылки, по которой пользователь может щелкнуть, чтобы выполнить выражение для образца XML-документа ипросмотреть совпадения ( пример ссылки , пример отображаемой страницы ).
Моя директива указывает, что она не имеет содержимого, принимает один обязательный аргумент (выражение 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)становится действительно запутанным.Если я экранирую *
с обратной косой чертой, то это делает моего редактора счастливым, но обратная косая черта появляется в выводе.
Мои вопросы:
- Являются ли специальные символы варгумент директивы, которую предполагается экранировать?
- Если да, то предоставляет ли API директивы способ получить неэкранированную версию?
- Или все работает нормально, и единственная проблема - это мой редакторне в состоянии правильно выделить вещи?
Это может показаться незначительной проблемой, но, поскольку я новичок в первый раз, я считаю выделение очень полезным.