この文書では、トランスレータ(テキストからHTMLへの変換を行うモジュール)の仕様について解説します。
これは開発者向け(既存のトランスレータを改良したい人、あるいは一からトランスレータを作りたい人向け)の文書です。Pinky:blogを普通に利用する方は、この文書ではなく使い方を参照してください。
この文書では、トランスレータ(テキストからHTMLへの変換を行うモジュール)の仕様について解説します。
これは開発者向け(既存のトランスレータを改良したい人、あるいは一からトランスレータを作りたい人向け)の文書です。Pinky:blogを普通に利用する方は、この文書ではなく使い方を参照してください。
Pinky:blogが用いるHTMLトランスレータの実体は、Ruby言語によって書かれたスクリプト(xxx.rb
)と、そのスクリプトが必要とするものを含んだディレクトリのセットである。
markdownトランスレータを例にとって解説する。
mod/
- translator/
- markdown.rb
- markdown/
- (必要なファイル)
モジュールディレクトリmod
の位置は、設定ファイルpinkyblog_conf.rb
によって定義される。標準ではblog.cgi
と同じ場所にある。
Pinky:blogはmarkdown.rb
をトランスレータとして認識する。ファイル名は、半角英数字、ハイフン(-
)、アンダースコア(_
)、ドット記号(.
)のみで構成されていることが望ましい。
markdown.rb
が必要とするファイルは、全てmarkdown
という名前のディレクトリの下に置く。このディレクトリは、必要でなければなくてもかまわない。
スクリプトxxx.rb
の基本的な構成は、次のようになる。
CAPTION = "〜記法で書く" class Translator def text_to_html(text) (トランスレート処理) end def format_guide return(<<-TEXT) (その記法の解説文) TEXT end end
スクリプトの文字コードはUTF-8N(BOMなしUTF-8)でなければならない。
定数CAPTION
には、その書き方を表す短い文字列を設定する。これは記事を書くとき、記法を選択するボックスに表示される。
Translator
クラスPinky:blogから実際に呼び出されるのはTranslator
クラスである。Pinky:blogはTranslator.new
で新しいインスタンスを作成し、メソッドtext_to_html(text)
でHTMLへの変換処理を行う。
format_guide
は、その記法についての解説文(マニュアル)をブラウザに表示するときに呼び出されるメソッドで、このメソッドはその記法自体で書かれたテキストを返す必要がある。たとえばmarkdownトランスレータのformat_guide
メソッドは、markdownで書かれた簡易マニュアル(String
)を返す必要がある。
添付ディレクトリにある必要なファイル(スクリプトなど)を呼び出すには、定数DIR_PATH
を用いる。
たとえばbluecloth.rb
を呼び出したい場合には、次のように書く。
require (DIR_PATH + 'bluecloth').to_s
DIR_PATH
はPathname
オブジェクトである。
スクリプトxxx.rb
は、無名Moduleの下で(module_evalで)評価される。つまり、先に挙げたスクリプトの例は、実際には次のようなイメージになる。
module *** CAPTION = "〜記法で書く" class Translator def text_to_html(text) (トランスレート処理) end end end
このため、使われていない名前(Translator
・CAPTION
・DIR_PATH
以外の名前)で、クラス・モジュール・定数を自由に定義することができる。