因为新冠病毒肺炎疫情,春节在家待了 11 天了,百无聊赖之下,想着优化一下老博客的排版。准备在中英文间补上空格,显得更美观一点,结果一篇博客都没改完就觉得累死了。。准备写工具来搞

搜了一下有 现成的代码 ,但是依赖 Pelican。作者还提到可以用 MPT 优化,但是我看了一下 MPT 的介绍,是类似前缀树的东西,每次取一个字符分析的话,是不会取到一个串的,前缀树用不上,倒是可以用二叉树简化一下区间查找。于是读完了 GeeksForGeeks 的 interval tree 介绍 ,自己实现了二叉平衡树(AVL),再将 interval tree 的功能加上去,以便快速实现查找。最后去掉了不断 += 字符的操作,用 ''.join 代替,避免频繁的字符串内存拷贝

代码放在 github 上 ,关于 CJK 字符的范围来自 cjk-auto-spacing 的代码,在此致谢。这个命令行工具没有添加遍历目录的功能,只会从命令行参数读入一个文件名,然后添加空格并原地回写文件,建议只用于有版本控制的文档,方便随时回退修改。至于遍历所有文件的功能,可以用 fd 命令实现。比如 :

fd . ../spin6lock.github.io/_posts/ -x python3 main.py 

fd 会启动一个线程池,取出匹配的路径,然后执行指定命令,类似于 GNU Parallel, 速度很快 , 点个赞