我正在编写一个sphinx扩展,将自定义指令转换为flat-table
。
从.run(self)
方法内部,我在纯.rst
中构建了一个完整的flat-table
声明,并且我想将该字符串提供给内部解析器,因此它被转换为Node
,我将从.run(self)
返回。
我相信nested_parse
是正确的方法。它通常用于解析指令中的嵌套内容,但我认为它可以与任何有效的字符串数组一起使用。rst
def run(self):
decl = '''
.. flat-table:: Characteristics of the BLE badge
:header-rows: 1
* - Service
- Characteristic
- Properties
* - :rspan:`2` 0xfee7
- 0xfec7
- WRITE
* - 0xfec8
- INDICATE
* - 0xfec9
- READ
* - 0xfee0
- 0xfee1
'''
table_node = nodes.paragraph()
self.state.nested_parse(decl.split('n'), 0, table_node)
return [table_node]
然而,这失败了:
Exception occurred:
File "C:Users200207121AppDataRoamingPythonPython38site-packagesdocutilsparsersrststates.py", line 287, in nested_parse
if block.parent and (len(block) - block_length) != 0:
AttributeError: 'list' object has no attribute 'parent'
如何使用nested_parse
解析原始.rst
文本?
nested_parse
期望内容为StringList
。
from docutils.statemachine import StringList
self.state.nested_parse(StringList(decl.split('n')), 0, table_node)