カラクリスタ

『輝かしい青春』なんて失かったヒトのブログ

blosxomのフレーバーを提供するモジュールを考え中

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の方も進まない。

誰か助言をプリーズ。