import docutils.nodes
from docutils import nodes, core
import docutils.nodes
from docutils.parsers.rst import Directive, directives
from pathlib import Path
class TestDirective(Directive):
''' Return the last two parts of the Path for each document that is processed. Do other cool stuff.'''
has_content = True
standard_include_path = Path(states.__file__).parent / 'include'
option_spec = {'file': directives.path,
'url': directives.uri,
'encoding': directives.encoding,
'class': directives.class_option}
def run(self):
# Next line is key to solving the problem
current_source = self.state.document.current_source
# Add error handling solution here
# Do some path manipulation
full_filepath = Path(current_source)
filepath_no_suffix = full_filepath.with_suffix('')
filepath = filepath_no_suffix.parts[-2:]
# View the last two parts of the file path of file being processed
# Purpose - Build a URL path; first, print path before assigning it to a variable.
url_path = Path(*filepath)
print("URL",url_path)
# Other code follows to traverse docutils.nodes and extract data.
# [...]
def setup(app):
# Register custom directive
app.add_directive("testdirective", TestDirective)
Предположения
- Элементы, добавленные в conf.py
sys.path.append(os.path.abspath('../_ext')) - в расширения добавлена директива test
[*]Использование Python3.10
[*]Использование специального файла Makefile, поддерживающего сборку make и сделать чистые цели
[*]Используя sphinx-quickstart, где было добавлено только 3 документа; используется в качестве исходного каталога
- Структура каталога:
source/
guides/
overview.rst
get_started.rst
developer_guide.rst
Ожидаемый результат
Иными словами, в каждой строке должен быть указан «URL-каталог/документ»
URL guides/overview7%] guides/overview
URL guides/get_started9%] guides/get_started
URL guides/developer_guide26%] guides/developer_guide
Вывод ошибки
В строке 1 возникает ошибка.
Это может быть связано с подтягиванием Sphinx. замены из rst_epilog в conf.py. Я не уверен.
URL
URL guides/get_started9%] guides/get_started
URL guides/developer_guide26%] guides/developer_guide
Опрос об ошибках
В строке 1 вывода ошибок вместо создания пути к файлу выдается .
Мне нужно закодировать некоторую обработку ошибок, чтобы быть уверенным, что если сборщик встретит сообщение такого типа, он сможет вернуться к имени родительского файла. Есть ли у кого-нибудь идеи, как это решить?
Что я пробовал
Я взламывал о включении некоторых вариантов класса Include(Directive) здесь: https://sphinx-docutils.readthedocs.io/ ... /misc.html#
До сих пор я пытался вставить следующий код, где появляется комментарий «Добавить сюда решение для обработки ошибок», но ничего не помогло.
Пример попытки устранить ошибку< /strong>:
current_source = self.state.document.current_source
path = directives.path(self.arguments[0])
if path.startswith(''):
_base = self.standard_include_path
path = path[1:-1]
else:
_base = Path(current_source).parent
path = utils.relative_path(None, _base/path)
Однако, если я добавлю приведенный выше код, я получу следующую ошибку:
path = directives.path(self.arguments[0])
IndexError: list index out of range
Подробнее здесь: https://stackoverflow.com/questions/785 ... e-in-sphin