使用nested_parse解析原始rst字符串



我正在编写一个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)

相关内容

  • 没有找到相关文章

最新更新