自作のディレクティブを有効するために

written on Sunday, February 12, 2012

rstblog で自作のロールやディレクティブを有効にする為には現状 rstblog/modules/ というディレクトリにモジュールを作成する必要がある。

手動で rstblog/modules に自作のモジュールを入れるのはやはり筋が悪い。

Sphinx には sphinxcontrib という仕組みがあり、設定ファイルに拡張モジュールを設定する仕組みになっている。

rstblog も同様に config.yml に使用する拡張モジュールを設定できるようにすれば良いと思い、パッチを作成した。

diff --git a/rstblog/builder.py b/rstblog/builder.py
index ea659dd..23da103 100644
--- a/rstblog/builder.py
+++ b/rstblog/builder.py
@@ -221,6 +221,11 @@ class Builder(object):
             mod.setup(self)
             self.modules.append(mod)

+        for extension in self.config.root_get('extensions') or []:
+            mod = __import__(extension, None, None, ['setup'])
+            mod.setup(self)
+            self.modules.append(mod)
+
     @property
     def default_output_folder(self):
         return os.path.join(self.project_folder,

config.yml に extensions というのがあると利用できるようにした。

---
active_modules: [pygments, tags, blog, latex]
extensions: [rstblogcontrib.youtube]

こんな感じでモジュールを設定してやる。

とりあえず rstblog 自体に pull request を出してみたが、取り入られるかどうかは微妙な気がする…。

This entry was tagged python, restructuredtext and rstblog