このモジュールでは、処理のための基礎となるクラスと外部とのインターフェースが提供される。
Processorクラスは引数無しでインスタンス化する。生成直後のインスタンスは実質的に文書の処理機能を持ち合わせていないので、後述のaddメソッドを用いて処理機能を付ける。
Processorオブジェクトに処理機能を登録する。targetは以下の値のいずれかとする。
classはクラス自体を渡す。
distの直前にclassを登録する。
クラス名がnameであるオブジェクトを削除する。
登録されたオブジェクトを列挙する。
textをHTMLに変換した結果を返す。結果は辞書形式で返される。
内部ではtextは改行文字2つで分割されたリスト形式として保持されている。
下記のget_processor()で返されるProcessorオブジェクトで処理した場合及びprocess()で処理した結果は、body, titleを辞書のキーとして持つ。
後述のssd.selで提供されるオブジェクトを全て登録されたProcessorオブジェクトを返す。
get_processorで返されるオブジェクトでtextを処理した結果を返す。
このモジュールではSSDにおいて実際の処理を行うクラス及びその基底クラスが提供される。
Processオブジェクトに登録されるクラスは、全てこのクラスを継承する必要がある。
呼出元のProcessorオブジェクトである。
regは正規表現オブジェクトである。
dataに対して操作を行った結果を返す。ブロック要素、インライン要素、preprocess/postprocessで若干性質が異なる。
ブロック要素を処理する場合、dataはreg.searchが返すMatchObjectである。reg.searchにマッチしない場合、処理は回ってこない。通常、processが呼び出されてもインライン要素の処理は自動で行われない。インライン要素を処理する場合、self.proc._parse_inlineを呼び出すこと。
インライン要素を処理する場合、dataは単なるテキストである。
preprocess/postprocessの場合、引数無しのメソッドとして実装する。