@TOC
前言
本文只作为笔记记录。
列表文本是一个较为独立的文本块,但是内部包含层级关系。在新版TinML设计中,使用一个标签表示整个列表文本块。
<ls>list-1;
|list-2;
|...|
不同的层级在列表行文本前加|
确定,一级列表不需要|
,然后逐级增加,最多三个,即支持四级列表。
<ls>list-1;
||list-1-1
|||list-1-1-1
||||list-1-1-1-1
|list-2
||list-2-1
|...|
TinML支持两种列表标签:<ls>, <nl>
,分别为无序列表和有序列表。
无序列表只需要根据|
的数量,设定行文本缩进空间即可;而有序列表涉及到列表编号从属问题,需要进一步的设计。
思路设计
以下为思路,并非可用代码。
预处理
首先,我们需要从TinML文本中获得有意义的列表参数和文本,这部分由TinML解释器完成。具体处理结果如下:
<nl>这是第一个;
|第二个
||第二-1个
|||第二-1-1个
||||第二-1-1-1个
|第三个|
tag:"<nl>",
lists:(
(0,"这是第一个"),
(0,"第二个"),
(1,"第二-1个"),
(2,"第二-1-1个"),
(3,"第二-1-1-1个"),
(0,"第三个")
)
编号记录
由于有序列表(<nl> | <numlist>
)每行列表文本之间有顺序与从属关系,我们必然需要用一个起始编号变量,来记录当前渲染的列表的序号和从属。同时,我们也可以创建一个列表序号列表,包含四个整数,来表示当前列表序号。
levels=[0,0,0,0]#层级
lastl