java plug机制_插件机制 - OpooPress - 基于 Java 的静态博客生成器

插件机制

通过插件机制可以很容易的扩展 OpooPress 博客系统的功能。 Plugin 定义如下

public interface Plugin{

/**

*

* @param registry

*/

void initialize(Registry registry);

}

Registry 接口定义如下:

public interface Registry {

Site getSite();

void registerConverter(Converter c);

void registerGenerator(Generator g);

void registerSiteFilter(SiteFilter filter);

void registerTemplateModel(String name, TemplateModel model);

void registerTemplateLoader(TemplateLoader loader);

}

可见,要自定义插件,主要就是实现 Plugin 接口 的 initialize() 方法。在该方法中,开发者可以调用 Registry 对象注册自定义的组件。这些自定义的组件包括:Converter、Generator、SiteFilter、TemplateModel、TemplateLoader 等。

Converter

格式转化器。

主要用来转化博客或者网站的源文件。OpooPress 默认支持 Markdown 和 Textile 格式,分别由 org.opoo.press.converter.TxtmarkMarkdownConverter 和 org.opoo.press.converter.TextilejConverter 进行处理。

开发者可自定义 Converter 来替换现有的转化器,或者支持新格式。例如可以开发 WikiConverter 用于支持 *.wiki 文件的处理。

Generator

页面生成器。

主要用于生成特定的输出页面,如 博客首页分页页面、标签页面、分类目录页面等。

开发者可以自定义 Generator 来生成所需的页面,例如生成站点地图文件 sitemap.xml 和 sitemaps.html。

SiteFilter

站点过滤器(处理器)。

用于在站点(site)生成引擎运行的各个阶段中插入自己的处理代码,这些可插入代码的点为 setup, read, generate, reader, write。

该接口的定义详见源文件 SiteFilter.java,可查看 SiteImpl 类源文件了解 SiteFilter 是如何以及何时被调用的。

TemplateModel

自定 FreeMarker 模板模型。

开发者可以通过这个机制自定义 FreeMarker 标签并注册,就可以在文章或者页面中调用这些标签。请阅读 FreeMarker 文档了解详情。

TemplateModel 还可以用来自定义函数,同样注册后可在页面中调用。例如 TitleCaseModel。

TemplateLoader

FreeMarker TemplateLoader,用于指定注册自定义的 FreeMarker 模板加载器。

DefaultPlugin

目前 OpooPress 默认的生成引擎也是通过插件机制实现的,默认插件为 DefaultPlugin,该插件会自动查找站点配置文件 config.yml 中定义的 Converter、Generator、SiteFilter 类名,实例化这些类并自动注册。

config.yml 关于 DefaultPlugin 的配置如下:

# ------------------------ #

# Default PlugIn Settings #

# ------------------------ #

converters:

- org.opoo.press.converter.TxtmarkMarkdownConverter

- org.opoo.press.converter.TextilejConverter

generators:

- org.opoo.press.generator.PaginationGenerator

- org.opoo.press.generator.CategoryGenerator

- org.opoo.press.generator.TagGenerator

# siteFilters:

# - org.opoo.press.filter.FixUrlSiteFilter

如果开发者不打算定义一个完整的 Plugin,仅仅开发 Converter 或者 Generator,可以在这里进行配置,而不必配置整个插件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值