[Pelican] 新增 GitHub Gist reStructuredText 標籤

話說 GitHubGist 是一個很方便的程式碼剪貼板,支援了版本控制、程式碼上色,另外也提供非常不錯的網頁內嵌功能,我也丟了不少程式碼到 GitHub Gist 上。

另一方面 XDite 之前介紹的 OctoPress 支援在 Markdown 裡內嵌 Gist,這確實是個非常吸引人的功能。

可惜這個功能在 Pelican 裡本身沒有,但因為 reStructuredText 和 DocUtils 的設計上本來就有考慮到讓使用者新增指令,所以要讓 Pelican 可以在 reStructuredText 裡加入 Gist 籤入其實很簡單。

要達成這樣的功能,只要在 pelican/rstdirectives.py 裡加入下面的 GitHubGist 類別,以及註冊函數。

我也把這個功能丟到了 GitHub 的我的 Pelican fork 上面,所以可以直接用下面的指令安裝

# pip uninstall pelican
# pip install git+http://brianhsu@github.com/brianhsu/pelican.git#egg=pelican

安裝完之後,就可以用 .. gist:: [GistID] 的方式來嵌入 Gist 到文章裡囉,舉例來講要嵌入上面的那段程式碼的話,可以在文章裡加入下面這段,這樣在生出來的網頁裡就會嵌入指定的 Gist 囉。

另外,這個指令會直接從 GitHub 抓當下 Gist 的版本,並且將他放到一個 <noscript> 標籤中,所以若使用者是用 RSS 讀取文章,也一樣可以看到得程式碼。

下面的指令會嵌入 GitHub Gist

.. gist:: 1407759

回響