tomi-ruのモバイル日記

profile
記事とカテゴリ一覧はこちら
 | 

2008-07-04

CatalystでEncode::JP::Mobileでうまくdecode/encodeするもの

| 10:25 | はてなブックマーク - CatalystでEncode::JP::Mobileでうまくdecode/encodeするもの - tomi-ruのモバイル日記

http://mobilehacker.g.hatena.ne.jp/tomi-ru/20080625/1214366711 のつづきですが、

http://svn.coderepos.org/share/lang/perl/Catalyst-Plugin-Unicode-Encoding-JP-Mobile/trunk/ を#catalystで見せたところ、

「全体がモバイルじゃなくしたい時もモバイルになってしまうから、Controllerにしたほうがいいんじゃないか。全体がモバイルのときは、MyApp/Controller/Root.pm で use base すればよろし」

f:id:tomi-ru:20080704102808p:image

ということで、Plugin版に替わるものとして http://svn.coderepos.org/share/lang/perl/Catalyst-Controller-Mobile-JP/trunk/ というController版を作りました。

beginとendを用意するものなので、beginやendを実装する場合たとえばRenderViewと一緒に使う場合などは以下のようにnext::methodを呼んでCatalyst::Controller::Mobile::JPのendを呼んでやる必要があります。

package MyApp::Controller::Root;
use strict;
use base 'Catalyst::Controller::Mobile::JP';
__PACKAGE__->config->{namespace} = '';

sub foo :Local {
}

sub render :ActionClass('RenderView') {
    my ($self, $c) = @_;
}

sub end :Private {
    my ($self, $c) = @_;

    $c->stash->{encoding} = $self->encoding;
    $c->forward('render');

    $self->next::method($c);
}

エンコーディングを決めているHTTP::MobileAgent::Plugin::Charset的にはPCの場合はutf-8となるので、別にモバイル専用じゃないんだけどな、とか、encode/decodeはCatalyst側でやったほうがいいような?という気もしてPluginでいいような気もますが、トリッキーなことをしていることは確かなので、Controller版の方がいいのかと悩み中です。

Catalystで携帯エンコーディングを扱いたい方、ご意見などありましたらください。特になければController版で近日UP予定です

7/8追記

特に異論もでなかったのと、使ってみて特に問題はなさそうなので、PODを手直しなどしてshipitしました。

予定地: http://search.cpan.org/perldoc?Catalyst::Controller::Mobile::JP

DamirDamir2013/03/20 16:01At last! Someone with the iisnhgt to solve the problem!

vtnolqsrivtnolqsri2013/03/21 08:41N56LaS <a href="http://snwrhbgloubu.com/">snwrhbgloubu</a>

tudusdmhhttudusdmhht2013/03/23 06:33wANQ5j <a href="http://rbyeuszwqzeg.com/">rbyeuszwqzeg</a>

トラックバック - http://mobilehacker.g.hatena.ne.jp/tomi-ru/20080704
 |