在 Hugo 上實現 PlantUML

透過 Shortcode 完成

前言

在搬遷文章以及個人資訊到 Hugo 後,就開始一直尋找在 Hugo 的 Markdown 上寫入 PlantUML 的方式,第一是這樣未來我我在畫圖或表達抽象意思時,能夠較快的撰寫,再來是我本來就想研究在 Markdown 內實現畫圖

後來花了大概一天的時間研究,並從網路上參考了 Mogeko’s Blog 的資料,完成了這個透過 Shortcode 實現的方法,因此特別寫下來流程

有要使用的朋友歡迎到我的 Github hugo-shortcode-plantuml 上,有完整的 Code 可以下載

原理

最早的 Idea 是我在使用 Wordpress 作為網站部落格時,會下載 PlantUML 套件來進行撰寫,當時就注意到很多這種套件都是用 shortcode 的方式來實現,研究後了解比較接近於提供一小區塊的 HTML 變化,來達到不同的目的

因此假如有一段 PlantUML 如下,我想要把他想辦法在 HTML 中呈現出來

Alice -> 張三
張三 -> Felipe

在研究之後,了解了透過 HTML 實現需要有三個步驟

  1. 將語法內容(Alice 到 Felipe 這段)透過指定方式轉換為一串代碼
  2. 將代碼送給 PlantUML 的 Server,並請他回傳 svg 檔案
  3. 將回傳的 svg 檔案,顯示在 Hugo 上

而我實現這個的方式,就是透過 Hugo shortcode 的機制完成,我只要在 index.md 中打入以下文字

{{ < plantuml >}}    ---> 實際上 "{{>" 中間沒有空格
Alice -> 張三
張三 -> Felipe
{{ < /plantuml >}}

就可以渲染成以下的圖示

  
Alice -> 張三
張三 -> Felipe

  

如何使用

我都放在這個 Repo上摟
但還是要說明這不是我原創,基本上都是透過 Mogeko’s Blog 完成的,謝謝大神
另外目前有個 Bug,就是渲染的時候有時會額外渲染 2-3 次,至於為什麼我也不知道