TinText

Tin标记语言(TinML)

一门简洁、清晰、规范、易转译、用于流式渲染的标记语言。


特性

TinML具有如下特性:

  1. 简洁 - 只需要简单的标签和若干标记(比markdown复杂一点)
  2. 清晰 - 任何内容都可以通过标签和标记判断出来,便于阅读、编写
  3. 规范 - 标签、语法标准规范(比markdown统一一点)
  4. 可转译 - 可转译为html
  5. 可流式渲染 - 流式渲染,读者跟着作者的思维

发展

起源

2020年,为了练手,创建了一个名为TinReader的项目。起初是为了练习tkinter界面、python文本处理、python网络处理等等,但是希望项目有那么一点点实用性,所以就以渲染一个新的标记文本为背景,创建了这个项目。

Tin标记语言,就是TinReader需要处理的一种自创标记语言,所有的标准与解释,都被直接内置在TinReader之中。

想法非常简单,就是单纯练习。Tin标记语言整体框架取自HTML,但是几乎没有嵌套,也没有计划进行嵌套支持,而是像markdown一样方便编写。现在来看,当时的Tin标记语言的标签还是复杂了一点,够清晰但不够简洁,而且没必要的参数太多了,花里胡哨的。

花里胡哨的有html支持、文件下载占用单独标签、自动打开网页等等。

成熟

2020年末,TinReader改名(非正式)TinGroup,由我们几个同学维护,也会自己使用,包括但不限于:

到了2021年夏天,我们参加中考,相当一部分人也算是分道扬镳了,那些tin文件则一直存放在我们的班级文件夹里,留下的还有当时的tinreader应用程序文件。

到了高中,我们几个初中同学给TinGroup写下了最后几行代码,2022年初,TinGroup维护团队解散,团队的每个人都要在新的环境里劈荆斩浪。

2022年中,我算是在新的班级混熟了,这是省属学校的重点班,有几个同学也对此感兴趣,一直再给TinGroup贴补丁,却几乎没有添加新的东西。不过,2023年中,即将进入高三,就没有人再管这个项目了,TinGroup的故事(当时是TinReader-2.5版本,TinEngine为V3版本)到此结束。

重构

2024年,高考考完,考得不错,闲来无事,抛弃原有框架,直接重写。

这次,Tin标记语言不再作为“tkinter渲染标记语言”中的一环,而是被定义为一门真正的标记语言,从格式、语法、具体标签、解释、转译等方面重新定义TinML。新的TinText应用只是TinML的一种实现。本次练习项目是基于python.tkinter语法解析、多线程与多进程操作、标记语言转译等等。

……


语法

TinML语法


支持的标签

TinML标签


文件类型标准

根据新版TinML标准,Tin标记文本可存储在以下格式文件中。

文件格式 后缀名 说明
TIN *.tin TinML将以源码的形式储存在TIN文件中,适用于编写、长期更新修改、绝大部分阅读情景。
TINP *.tinp TinML通过XOR加密后存储在TINP文件中,适用于保密阅读情景、文本中包含有意义保密片段。
TINX *.tinx TinML经过加密与依赖文件打包后储存在TINX文件中,适用于保密阅读、无网络需求阅读与本地直接呈现等场景。