这是python基础教程第20章的项目一:即时标记
目的就是要将一段文本根据文本的格式转换成html
原文本
原文本
添加标记后
添加标记
用浏览器打开
这个项目分为四个模块:
分析器:负责读取文本,管理其他的类
规则:检测文本块的类型(标题,列表等),使用相对应的规则
过滤器:处理一些内嵌元素,比如
处理程序:为文本块添加标记
处理程序
处理程序是添加标记的程序
handlers.py
首先定义了一个超类,其中的start函数和end函数都是为了调用callback函数,callback函数负责在给定一个前缀(例如:start_)和一个名字(例如:paragraph)后查找正确的方法(start_parapraph)。sub方法则会返回一个函数用在re.sub中的第二个函数参数来使用,起到替换文本的作用
handlers.py
处理程序的超类中的callback和sub方法继承到这个类中,然后这个类就可以调用这些方法,这些方法很简单,就是输出开始标签和结束标签
过滤器
过滤器
这几个就是过滤器,很简单,是为了检测文本块中是否有em、url和mail格式的文本
规则
这个模块,抛开祖父类不说,其他类应该有的两个方法是condition和action,前者是用来判断读进来的字符串是不是符合自家规则,后者是用来执行操作的,所谓的执行操作就是指调用“处理程序模块”,输出前标签、内容、后标签。
rules.py
rules.py
分析器
这个模块的作用其实就是协调读入的文本和其他模块的关系。在往重点说就是,提供了两个存放“规则”和“过滤器”的列表,这么做的好处就是使得整个程序的灵活性得到了极大的提高,使得规则和过滤器变成的热插拔的方式,当然这个也归功于前面在写规则和过滤器时每一种类型的规则(过滤器)都单独的写成了一个类,而不是用if..else来区分。
makeup.py
makeup.py
补充:
util.py
这个文件就是读取文件中的内容,并分成文本块
欢迎大家关注头条号:热衷python和前端
如果有需要源码的同学就留言或者私聊我吧