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の方も進まない。
誰か助言をプリーズ。