blosxom のフレーバーシステムを提供するモジュールを考え中。
blosxom のフレーバーシステムを Perl モジュールにしようと考えているんだけど、細かいところが決まらない。とりあえず OO Interface だけにしようと思ってはいるんだけど、コンストラクタの引数をどうするかで悩んでる。
とりあえずメソッドとかは、
use HTML::Flavour; my $tmpl = HTML::Flavour->new(); my $head = $tmpl->template('/foo/bar', 'head', 'html'); $tmpl->param( foo => 'bar', bar => 'foo', ); $head = $tmpl->interpolate( $head );
こんな感じにしようかと思っているんだけど、template
, interpolate,param
の入れ替えをどう実装するかが決まらない。
blosxom の場合、param
を除くとして、template
,interpolate
はプラグインによって書き換え可能なので、それをモジュールでもやらないと意味がない。で、なるべく使いまわしができるように、HTML::Flavour で各メソッドのクラスを指定するという感じにしたい。
となると、コンストラクタで指定した方がよさげなんだけど、どうしたもんか。
とりあえず思いついたのが、
# アイディア1 my $tmpl = HTML::Flavour->new( template => { class => 'Template::Class', config => { name => 'value' }, }, interpolate => { class => 'Interpolate::Class', config => { name => 'value' }, }, ); # アイディア2 my $tmpl = HTML::Flavour->new( class => { tempalte => 'Template::Class', interpolate => 'Interpolte::Class', }, config => { template => { name => 'value' }, interpolate => { name => 'value' }, }, ); # アイディア3 my $tmpl = HTML::Flaovur->new( 'Template::Class' => { name => 'value' }, 'Interpolate::Class' => { name => 'value' }, );
こんな感じ。
これ以外にも名前をどうするとか。とりあえず HTML::Flavour にしてあるけど、他の方がいいとか悪いとか。これ作んないと NyakiLog の方も進まない。
誰か助言をプリーズ。