hugo 中的函数 replaceRE 用处很多!

2019-03-02 16:29:06 +08:00
 rayhy

偶然看到一篇博客: https://www.junian.net/hugo-image-figure-wrap/

可以用 replaceRE 把 Markdown 转换得到的 HTML 中的 img 标签变成 figure 标签:

<p><img src="https://www.example.com/image.png" alt="Alt Text" title="Title Text"></p>

变为

<figure>
  <img src="https://www.example.com/image.png" alt="Alt Text" title="Title Text">
  <figcaption>Alt Text</figcaption>
</figure>

我按它的思路,顺手改了下我博客的主题代码,可以把图片的 src 由本地地址变为图床上的地址:

src原来是ranked_results.jpg,现在是https://图床 HOST/img/blog/ReID 任务中的 CMC 和 mAP/ranked_results.jpg。省的自己在 Markdown 文件中改了。感觉蛮方便的。

上面这个功能最关键的代码是

{{ $reAltIn := "<img src=\"([^\"/]+)\" alt=\"([^\"]+)\" />" }}
{{ $reAltOut := (printf "<img src=\"%s%s$1\" alt=\"$2\">" .Site.Params.CDN.Host .Dir )}}
{{ $altContent := .Content | replaceRE $reAltIn $reAltOut | safeHTML }}

replaceRE+斟酌半天的正则=奇巧淫计

1264 次点击
所在节点    分享发现
2 条回复
rayhy
2019-03-02 16:32:09 +08:00
甚至可以实现用![ALT text@200]( https://www.example.com/image.png)来指定图片的宽度为 200,就看你 replace 时怎么写了。
codehz
2019-03-04 11:24:06 +08:00
正则写得爽,修改火葬场

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/540350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX