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,可以在這里進行配置,而不必配置整個插件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534224.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

運放放大倍數計算公式_19.運算放大器的特性與應用,不得不掌握的知識點(一)...

運算放大器,簡稱“運放”,是電力電子中最重要的器件之一,主要作用為:信號放大、信號運算、信號處理、波形的產生和變換。一、運算放大器的內部結構集成運算放大器內部結構集成運算放大器內部一般由四個單元組成,各單元…

java選項設置_java環境配置

javac無法執行檢查:看看java 相關的java相關路徑有沒有多余的符號,比如多出分號,逗號(筆者上面是正確的路徑展示形式)Win10下 Java環境變量配置首先,你應該已經安裝了 Java 的 JDK 了(如果沒有安裝JDK,請跳轉到此網址&…

teleport 組件的作用_人臉識別綜述! 覆蓋人臉檢測,預處理和特征表示三大核心組件!...

The Elements of End-to-end Deep Face Recognition: A Survey of Recent Advances 人臉識別是計算機視覺社區中最基礎和歷史悠久的話題之一。隨著深度卷積網絡和大尺度數據集發展,深度人臉識別取得極大進步并且應用到許多領域。給定一個自然圖像或者視頻幀作為輸入…

itunes未能連接到iphone_iTunes下載_蘋果iTunes官方下載「32位|64位」

iTunes是蘋果官方推出的Apple官方數字媒體播放與管理應用程序。蘋果iTunes官方下載中文版能將您所有的媒體文件和應用收藏導入iPad和iPhone,您還可以通過它購買應用、數字音樂、視頻、電視及游戲等等。iTunes是目前最專業的iPad和iPhone管理應用工具。本站提供蘋果i…

java短視頻上傳阿里云流程_短視頻上傳

啟動上傳前需要設置上傳回調,需要實現VODSVideoUploadCallback回調:vodsVideoUploadClient.uploadWithVideoAndImg(vodSessionCreateInfo, new VODSVideoUploadCallback() {Overridepublic void onUploadSucceed(String videoId, String imageUrl) {//上…

feko軟件_計算電磁學各種方法和電磁仿真軟件簡述

計算電磁學中有眾多不同的算法,如時域有限差分法(FDTD)、時域有限積分法(FITD)、有限元法(FE)、矩量法(MoM)、邊界元法(BEM)、 譜域法(SM)、傳輸線法(TLM)、模式匹配法(MM)、橫向諧振法(TRM)、線方法(ML)和解析法等等。在頻域,數值算法有:有限…

出租車管理系統java_基于jsp的出租車管理系統-JavaEE實現出租車管理系統 - java項目源碼...

基于jspservletpojomysql實現一個javaee/javaweb的出租車管理系統, 該項目可用各類java課程設計大作業中, 出租車管理系統的系統架構分為前后臺兩部分, 最終實現在線上進行出租車管理系統各項功能,實現了諸如用戶管理, 登錄注冊, 權限管理等功能, 并實現對各類出租車管理系統相…

cad常青藤插件_原來還有這么好用的CAD插件,半小時就能做完一張圖

作為一名優秀的設計師或者建筑師,如果你沒用過逆天的CAD插件,我覺得不行,所以下面小編就給大家推薦幾個非常好用的CAD插件,希望可以幫助大家大幅提升工作效率。接下來小編就帶大家一起看看吧!1、天正建筑天正建筑顧名思…

java 停止線程播放音頻_Notification?播放?關閉?聲音----轉載

NotificationPlayer.java定義一個播放Notification聲音的player,本質上仍然是一個MediaPlayer,這個是多線程編程的很好的例子public class NotificationPlayer implements OnCompletionListener {//發送播放和停止的cmdprivate static final int PLAY 1…

java main是標識符嗎_main方法的認識 、通配符、java的注釋、java的符(標識符)【Java基礎】...

main方法的認識print()和println()的區別print()打印不換行println()打印并換行通配符\n換行符\t制表符都應用于控制臺\n換行\t以表格的形式顯示System.out.println("----------英雄排行榜------------");System.out.println("\t|編號\t|名字\t|戰力值\t|"…

對于半圓形的點擊區域該怎么做_十堰混合型塑膠跑道怎么選,橡膠跑道卷材型號...

河北邁弘體育設施有限公司為您詳細解讀hVgkXc十堰混合型塑膠跑道怎么選的相關知識與詳情,校園跑道、體育館田徑跑道等都是體育活動的首先場合。由于終年正在室外遭到風吹日曬,還要接受日常體育活動的摩擦、描寫、化學物量腐蝕或重物擠壓等因素&#xff0…

希望得到學術會議的及時回復該怎么說_張燁:在“選礦”博士的世界里,腳踏實地從來都不是說說而已!| 中南達人NO.188...

張燁資源加工與生物工程學院礦業工程2017級博士中南大學2019年大學生年度人物之一獲獎經歷(部分)2016年中南大學FMG獎勵金優秀學生獎2017年中南大學優秀畢業生2018年中南大學優秀學生2019年中南大學優秀學生博士研究生國家獎學金中南大學大學生年度人物2017-2019年博士一等學業…

java編寫一個集合類_Java集合類

數組是一種很常見的數據結構,開始接觸編程的時候多數程序都和數組相關。剛開始接觸Java時也是一直使用數組寫一些程序,后來越來越覺得數組這東西沒法滿足需求了,這時一位“前輩”對我說了一句:不會用集合類就等于沒學過Java。然后…

python 當前文件路徑獲取方式_Python獲取當前文件路徑

一. Python 獲取當前文件路徑方法2. sys.path[0]獲取文件當前工作目錄路徑(絕對路徑)sys.argv[0]|獲得模塊所在的路徑(由系統決定是否是全名)若顯示調用python指令,如python demo.py,會得到絕對路徑;若直接執行腳本,如./demo.py,會…

pdf不支持64位瀏覽器_4MLinux 31.0 發布,不支持32位

Zbigniew Konojacki宣布發布4MLinux 31.0,這是該項目極簡發行版的新穩定版本,專注于四個功能:維護(作為系統救援Live CD),多媒體(用于播放視頻DVD和其他多媒體文件),迷你服務器(使用inetd守護程序)和神秘的版本(提供幾…

java期末考試2013及答案_java筆試經典(題及答案)2013.doc

java筆試經典(題及答案)2013.doc Java筆試經典(基礎部分及答案和分析)1、一個“.java“源文件中是否可以包括多個類(不是內部類)?有什么限制?7答:可以包括多個類,但是最多只能有一個public修飾的類。2、Java有沒有goto?7答:java中…

datatables 行分組信息展開與折疊的功能實現_[LaTeX 嘗試] fancyvrb - 修復行引用的超鏈接跳轉位置

本文已加入專欄文章目錄,歸入「進階使用」文章系列。本文可以看作對這個發生于 2019 年 7 月中旬的 TeX-SX 上自問自答的展開說明。那個回答中避免了 python 的使用,而是利用 zref 宏包把位置信息以文本形式在 pdf 中呈現,好處是不用引入 pyt…

qtcreator攝像頭顯示時間_三星Galaxy S11 +渲染器展現出巨大的相機凹凸和四邊形曲面顯示...

我們正接近一年中三星宣布其Galaxy S系列最新設備的時間。Galaxy S10系列被認為是三星發布的最好的版本之一,因此在這方面他們有很多重要的事情。我們已經看到了Galaxy S11和Galaxy S11e的渲染,但是現在我們首先來看看Galaxy S11 。三星Galaxy S11 與其他…

php源碼安裝配置,php源碼安裝時configure配置參數 | 學步園

在Linux下安裝PHP,源代碼方式安裝,總需要配置很多參數。這里列出常用配置參數,并詳細用中文解釋說明了。給大家一些參考./configure–prefix/usr/local/PHP php 安裝目錄–with-apxs2/usr/local/apache/bi…

python遞歸函數詳解-講解Python中的遞歸函數

在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數。 舉個例子,我們來計算階乘n! 1 x 2 x 3 x ... x n,用函數fact(n)表示,可以看出: ? 1 fact(n) n! 1 x2 x3 x ... x …