dram.me

自定义Pelican标记语言支持(SAM插件)

Pelican默认支持的标记语言种类不多(reStructuredText和Markdown),但它提供了简洁的插件机制,可以方便添加新的标记语言支持。

在介绍如果添加插件之前,先来分析下Pelican中对标记语言源文件处理的基本工作流程:

  1. 遍历源文件目录,根据扩展名调用不同的解析器(reader);

  2. 从解析器中获得页面元数据(标题、日期等)和内容信息;

可以据此推导出标记语言插件需要具备的功能:

具体来说,Pelican的插件通过继承pelican.readers.BaseReader类来实现。其中定义有file_extensions属性,实现read方法。read方法返回一个元组,包含页面内容和元数据。

插件的注册是通过在插件文件中定义register函数实现。该函数在Pelican解析器初始化中挂载钩子,钩子的功能是向Pelican添加以上实现的新标记语言的解析类。

详细的内容,可以参考Pelican的Plugins文档以及这里的SAM插件