日付フィルタ

ここみたいに Path が /2005/12/27 とかからはじまっていた場合、それを日付情報としてパースし、それ以降の Path とともに default コントローラを呼ぶには

sub day : Regex('^(\d{4})/([01]?\d)/([0-3]?\d)(?:/(.*))?') {
    my ( $self, $c ) = @_;

    ( $c->stash->{yr}, $c->stash->{mo}, $c->stash->{da} )
        = @{ $c->req->snippets };
    $c->forward( '/default', [ split '/', $c->req->snippets->[-1] ] );
}

sub month : Regex('^(\d{4})/([01]?\d)(?:/(.*))?') {
    my ( $self, $c ) = @_;

    ( $c->stash->{yr}, $c->stash->{mo} ) = @{ $c->req->snippets };
    $c->forward( '/default', [ split '/', $c->req->snippets->[-1] ] );
}

sub year : Regex('^(\d{4})(?:/(.*))?') {
    my ( $self, $c ) = @_;

    ( $c->stash->{yr} ) = @{ $c->req->snippets };
    $c->forward( '/default', [ split '/', $c->req->snippets->[-1] ] );
}

とかしなくちゃいけなくて(思い付かなくて) DRY すぎるのでなんとかしたい。

がんばればまとめられそうだけど、ううむ。

つか関係ないけど Regex コントローラはマッチした部分がコントローラの引数で飛んでくるって感じならいいのに。

by typester / at 2005-12-27T12:06:00 / perl · catalyst / Comments(0)