Я написал пользовательский директиву Rest, который принимает входной сигнал, как это:Rest заказного ДИРЕКТИВА, построенные в писателе TraceBack
.. foo::
abcdef
ghijkl
mnopqr
a = apple; apple.png
b = banana; banana.png
(etc.)
и выводят таблицу. Стол имеет форму букв выше, каждая буква представляет собой изображение. Следующие несколько строк связывают изображение с каждой буквой.
Это часть директивы, которая делает вывод:
tbody = nodes.tbody()
for line in lines[:3]:
row = []
for c in line:
if c not in ingredients:
continue
name, image = ingredients[c]
row.append(nodes.image(uri=IMAGE_URL.format(image)))
row_entries = [nodes.entry([n]) for n in row]
row = nodes.row()
row.extend(row_entries)
tbody.append(row)
table = nodes.table()
tgroup = nodes.tgroup()
table.append(tgroup)
tgroup.append(tbody)
return [nodes.literal_block(text='\n'.join(self.content))] + table
Это «работает», в том, что он возвращается в порядке. Но позже, когда автор пытается вывести то, что моя директива вернулась, она вызывает отслеживающий:
Traceback (most recent call last):
File "./rst2html.py", line 24, in <module>
publish_cmdline(writer_name='html', description=description)
File "/usr/lib64/python3.2/site-packages/docutils/core.py", line 352, in publish_cmdline
config_section=config_section, enable_exit_status=enable_exit_status)
File "/usr/lib64/python3.2/site-packages/docutils/core.py", line 219, in publish
output = self.writer.write(self.document, self.destination)
File "/usr/lib64/python3.2/site-packages/docutils/writers/__init__.py", line 80, in write
self.translate()
File "/usr/lib64/python3.2/site-packages/docutils/writers/html4css1/__init__.py", line 173, in translate
self.document.walkabout(visitor)
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 174, in walkabout
if child.walkabout(visitor):
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 174, in walkabout
if child.walkabout(visitor):
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 174, in walkabout
if child.walkabout(visitor):
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 174, in walkabout
if child.walkabout(visitor):
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 174, in walkabout
if child.walkabout(visitor):
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 174, in walkabout
if child.walkabout(visitor):
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 166, in walkabout
visitor.dispatch_visit(self)
File "/usr/lib64/python3.2/site-packages/docutils/nodes.py", line 1627, in dispatch_visit
return method(node)
File "/usr/lib64/python3.2/site-packages/docutils/writers/html4css1/__init__.py", line 792, in visit_entry
if node.parent.parent.parent.stubs[node.parent.column]:
IndexError: list index out of range
Это казалось бы, ошибка в docutils
¹; Я предполагаю, что элементы таблицы, которые я возвращаю, не совсем «хорошо сформированы», по крайней мере, для автора. Однако, похоже, нет любой документации. (Если есть, пожалуйста, укажите мне!)
Кто-нибудь знает, что о узле таблицы Я возвращаю HTML-писателю, и что я должен изменить, чтобы исправить это?
¹ Даже если мой вывод не является хорошим, лучше получить сообщение об ошибке «Индекс списка вне диапазона».