2024/02/13 22:13:39

MojoMojo: Formatter

記事を整形処理するクラス

Formatter とは

MojoMojo には MojoMojo::Formatter::* というクラスがあり、それらのクラスがwikiの記事を整形処理してHTMLを生成しています。
Markdown や Textile も MojoMojo::Formatter::MarkdownMojoMojo::Formatter::Textile として実装されていて、何か記事を整形する処理を追加したいときは、Formatter を追加すれば良い仕組みになっています。

デフォルト Formatter

MojoMojo-1.00 でデフォルトでインストールされる Formatter は次のようなものです。

Formatter の書き方

上に挙げたいくつもの実装を参考にすれば独自の Formatter を書くのも簡単です。
ポイントは2点あります。

  • format_content_order
    MojoMojo の Formatter は Module::Pluggable::Ordered によって処理順がコントロールされていて、それぞれの Formatter のなかで、format_content_order メソッドを書き、処理順を明示しなければいけません。
    デフォルトの処理順は、Formatter のベースクラスとなる MojoMojo::Formatter の POD に掲載されています。
  • gen_re
    Formatter は記事の中で {{foo}} という中括弧で囲まれた部分を整形処理します。
    Formatter の中で、$class->gen_re(regex) とすることで、処理するべき記述を取得することができます。
    もしも記事全体を整形対象にするなら、format_content の第2引数 $content ( my ( $class, $content, $c ) = @_; )を書き換えます。

Formatter のテスト

Formatter のテストは、t/ 直下に formatter_*.t というファイル名で置かれます。
デフォルトでインストールされるどの Formatter にもテストがあるので、参考にして書けば難しいところは何もありません。

サイト内検索