@TOC
前言
本文只作为笔记记录。
目前,我们已经从Tin标记文本生成了标记单元。比如下方Tin标记文本。
<title>TITLE|2
<p>*THIS ;
|is title.|
经过TinParser
处理后,返回一个iterable对象,单元为一个元组:
(
(1,'<title>','TITLE','2'),
(2,'<p>','*THIS ','is title')
)
主要内容为:行号、标签名,标记内容。
那么为了在tkinter文本框中呈现这些内容,我们需要根据标签名称,确定标记内容的意义,这就需要用到解释器。这个名字可能有点怪,因为在新的Tin标记语言实现中,沿用边解释边渲染的方法,只不过遍历对象不再是之前的列表,而是现在的可迭代对象,速度更快。
逐个解释
在新版Tin标记语言实现中,TinText使用遍历通过TinParser
返回的迭代对象,采用逐个解释和渲染的方法,效率更高,而不是等所有解释完再一起渲染。另外Tin标记的即时呈现特性也需要这样做。
篇幅有限,本专栏的所有后续文章均以<title>, <p>
标签为例。
TinText
的初始化如下:
class TinText(ScrolledText):
"""
TinEngine.TinText
tin标记语言渲染核心
"""
RENDERING=False#渲染状态
def __init__(self, master, *args, **kw):
"""
部分参数是直接确定的
开发者只能通过实例化后进行更改
"""
super().__init__(master, *args, **kw)
self.config(borderwidth=0, relief="flat", insertbackground='#000000', insertborderwidth=1,
wrap='char', spacing1=10)
self.tinml=TinML()#tin标记记录
self.tinparser=TinParser()#解析器
self.balloon=Balloon()#提示框
self.img_thread_pool=ThreadPoolExecutor(max_workers=10)#图片下载线程池
self.__initialize()
def __initialize(self)