② 两鞭 → 标题、粗体、段落
h3和h2类似,都是直接将样式文本替换为{{text}}
网络异常,图片无法展示
|
h4稍微麻烦一点,因为前面还传多一个顺序参数:
网络异常,图片无法展示
|
接着重写heading函数,根据不同的level进行渲染:
网络异常,图片无法展示
|
接着传入下述mardown字符串:
网络异常,图片无法展示
|
运行,把渲染后的HTML贴到微信编辑器校验下:
网络异常,图片无法展示
|
可以,效果是针不戳,尔后是粗体及段落样式:
网络异常,图片无法展示
|
运行后,把生成的样式贴到公号编辑器康康效果:
网络异常,图片无法展示
|
换行全没了,原因是:微信会自动滤除文本结点中的\n
换行符。 一个简单的解决方法就是:在渲染段落文本时,将\n替换为<br>
修改下渲染处逻辑:
网络异常,图片无法展示
|
校验下效果:
网络异常,图片无法展示
|
③ 三鞭 → 表格、列表
表格的话直接用的微信编辑器自带的表格,样式如下:
网络异常,图片无法展示
|
对应代码如下:
网络异常,图片无法展示
|
mistune需启用plugin_table工具,才能解析表格,提供了下述可供覆盖的函数:
网络异常,图片无法展示
|
写个简单的demo试试康:
网络异常,图片无法展示
|
网络异常,图片无法展示
|
可以看到table_head中获取到了表头的文本结构,其他几个函数同样可获得不同部位的表结构。
但是,我最后还是选择了重写table()函数,因为表格的渲染是连贯的,如果每个函数单独渲染,最后塞到一个<table>里非常麻烦。
另外,公号大多时候是在手机上阅读,屏幕宽就那么点,一般建议两列的表格,这里我另外定义一个类Cell:
网络异常,图片无法展示
|
先来编写模板吧,预期是传入 表头列表 及 表内容列表,然后遍历渲染:
网络异常,图片无法展示
|
模板弄完,接着就是数据处理了,提取表头及表内容,塞到列表中,打印下text:
网络异常,图片无法展示
|
呕吼,直接用lxml提取一波:
网络异常,图片无法展示
|
丢个测试markdown进来:
网络异常,图片无法展示
|
复制生成样式至编辑器,检验下效果:
网络异常,图片无法展示
|
可以,舒服,然后是无序列表,也是使用编辑器自带样式:
网络异常,图片无法展示
|
抠出模板:
网络异常,图片无法展示
|
重写函数渲染模板:
网络异常,图片无法展示
|
传参校验:
网络异常,图片无法展示
|
Tips:把渲染后的HTML贴到编辑器处,空白处按下回车,无序列表才能正确缩进!