Skip to content

v0.4.0

Choose a tag to compare

@helloworldtang helloworldtang released this 23 Sep 06:01
· 2 commits to main since this release

变更

  • 修复:粗体尾部标点后紧跟文字(**X。**后缀)不再输出字面 **,正常渲染为 strong。段落与列表内行为一致。
  • 渲染前预归一化:命中失败面时把粗体尾部标点串整串移出粗体(**X。** → **X**。);后跟空白/标点/行尾的写法本来就能正常转换,一律不动。围栏代码块与行内代码内容不改。
  • 版本 0.3.0 → 0.4.0:受影响写法的渲染输出改变,按约定升 minor。

为什么

markdown2(含最新 2.5.5)对「粗体内部以标点结尾 + 关闭 ** 外侧紧跟汉字/字母」的写法不做强调转换,字面 ** 直接进 HTML;CommonMark 规范此处应为 strong,属实现不合规。线上踩中场景:公众号早报「1. **标签句。**说明」列表条目,成片字面 ** 读者可见。

验证证据:markdown2 裸库矩阵测试圈定精确失败面(12 用例,后跟标点/空白/行尾均正常);修复后全量 27 测试通过(新增 5 个回归用例覆盖复现写法、段落、标点串、不受影响面、代码保护),ruff + mypy strict 全绿;围栏/行内代码内的 ** 原样保留已由测试锁定。

已知代价:尾部标点串整串移出(如 **涨了3%。** → <strong>涨了3</strong>%。),% 不再粗体——只移末一个标点仍会踩 markdown2 死角,整串移出是转换成立的必要条件。

升级命令

pip install -U wechat-md==0.4.0

消费方指引

  • exomind(myExoMindManager):升级依赖并部署后,公众号投递的正文不再出现字面 **。
  • 直接消费 markdown_to_html 的调用方:仅「粗体尾部标点紧跟文字」类输入的输出发生变化(原先就是坏的),其余输入输出不变(含不传 theme 的逐字节回归护栏)。
  • 引用 GitHub 源请锁 refs/tags/v0.4.0.tar.gz,不要引滚动的 main。