[1] manakai のモジュール群 Message::Util::Formatter
<IW:SuikaCVS:"messaging/manakai/lib/Message/Util/Formatter/">
は、雛形と引数から結果を得るための汎用モジュールです。
たとえば、雛形 %year (digit => 4, zone => {+09:00});-%month (zone => {+09:00});-%date (zone => {+09:00}); と現在時刻から日付を得る (ように構成する) ことができます。
[5] Message::Util::Formatter
という名前のモジュールは既に
obsolete です。当分は互換性のために manakai の一部として配布されますが、
このモジュール自体は使わないでください。
代わりに、 Message::Util::Formatter::*
というモジュール群が用意されています。
Message::Util::Formatter::Base
:
雛形を解釈し、処理する手続きを呼び出す処理を実装した基底級です。
通常は、このモジュールを直接扱う必要はありませんが、
このモジュールを継承して処理に特化したモジュールを作成することもできます。Message::Util::Formatter::Text
:
雛形から結果として文字列を得るためのモジュールです。Message::Util::Formatter::Node
:
雛形から結果として木構造を得るためのモジュールです。
このモジュールは、 Message::Markup::XML::Node
といっしょに使うことを想定しています (たとえば、 append_new_node メソッドを使います)。
他の木構造を扱うモジュールを使うときには、 Message::Util::Formatter::Node
を参考に別途モジュールを作成する必要があります。Message::Util::Formatter::Boolean
:
雛形から結果として真偽値を得るためのモジュールです。
真または偽または不明 (undef
) を扱うことができます。[6] Message::Util::Formatter::*
に与える雛形の書式を、
Message::Util::Formatter
形式などと呼んでいます。
もっと短くて分かりやすくて格好良い名前があったら教えてください!
詳しくは Message::Util::Formatter//書式
を見てください。
[7] Message::Util::Formatter
で雛形から結果を得るには、
require formatter-module; my $formatter = formatter-module->new (%option); $result1 = $formatter->replace ($template1, %option1); $result2 = $formatter->replace ($template2, %option2);
のようにしてください。
[2] もともと、 Message::Field::Date
で任意の書式で日付を出力するために Message:Util::Formatter
モジュールが書かれました。
その後、 SuikaWiki (2) で WikiForm を記述するための書式として採用されました。
更に、 WikiView など、 SuikaWiki 全体に渡って
Message::Util::Formatter
が使われるようになりましたが、その際に、 XML
のような木構造を扱うために、出力を単純な文字列ではなく、
Perl の物体にできるようになりました。
[3] このような建て増しの結果 Message::Util::Formatter
は柔軟な扱いができなくなってしまいましたので、
新たに Message::Util::Formatter::Base
とその派生級に再構成されました。
新しい構成では、文字列を得るための
Message::Util::Formatter::Text
,
木構造を得るための Message::Util::Formatter::Node
,
論理値を得るための Message::Util::Formatter::Boolean
が用意され、必要に応じて使い分けることができます。
また、以上のいずれかのモジュールを基底としてより特化したモジュールを実装することもできます。