qr/\.(css|js|swf)$/
みたいなのを YAML で書くにはどうしたらいいのだろうとおもって、とりあえず YAML モジュールを使って
use YAML;
my $data = {
regex => qr/\.(css|js|swf)$/,
};
print Dump( $data );
こんなのをしてみる。
結果。
---
regex: !perl/regexp:
REGEXP: \.(css|js|swf)$
こんな風に書くのか。これを LoadFile しても
$VAR1 = {
'regex' => qr/(?-xism:(?:\.(css|js|swf)$))/
};
となるのでちゃんと使えるようだ。
でも YAML::Syck だと Load Dump ともにうまく動かない。
Authentication::Store::HTTP #2
0.04 で変なことしないで実装した。ロードする順番もいつでもOK。
trunk にあるコードは get_user にすべてのパラメータを渡してくれるようになっているのでそもそも昨日からの悩みは無用だったらしい。と、 nothingmuch が教えてくれた。
Authentication::Store::HTTP
作った。
昨日の夜書いた問題により、$c->login
のオーバーライドという暴挙に出ているため、Credential 系プラグインよりも先にロードする必要がありますw
Cred プラグインを選べるので、::Basic::Remote よりは良くなってはいる。
$/
perldoc perlvar みてたら、$/ とかみっけ。これが undef だとファイルハンドルは slurp モードになるらしい。
my $stdin = join '', <STDIN>;
を
my $stdin;
{
local $/;
$stdin = <STDIN>;
}
ほー
YAML Support of Module::Build
YAMLとの相性が悪い問題。最近は大丈夫になったかと思いきや、いまのModule::BuildはインストールするとYAML.pmのバージョンをチェックして新しすぎると
Feature 'YAML_support' disabled because of the following prerequisite failures:
* Version 0.58 of YAML is installed, but we need version < 0.49
とかいわれるようだ。このままだと META.yml をうまく作成してもらえない。
0.58 つかってても Module::Build::ConfigData を 'YAML_support' => 1
とかって書き換えれば動くように見えるんだけど。何でこんなことになっているのか。
C::P::EmailJapanese をアップデートしたら META.yml がおかしなことになってて気づいたよ。。
Catalyst::Plugin::Unicode
とかあったんだ! ほとんど同じやつ作ってた。
入れ替えた。
HTML::FillInForm::ForceUTF8 : blog.nomadscafe.jp
ただ、Catalyst::Plugin::UnicodeやDBIx::Class::UTF8Columns、Class::DBI::utf8などを使っている場合、必要ないかも。
必要ないんですが、プラグインのロード順に気をつける必要があります。
というのも Unicode も FillInForm もどちらも finalize をオーバーライドしているので、Unicode のほうがあとに実行されるように
use Catalyst qw/FillInForm Unicode/;
と FillInForm よりも後ろに書いておく必要があります。
BKだなぁ。
kazeburo さんのやつをつかえばこれに気をつける必要もなくなるのでいいかも。
ForceUTF8
lyokato さんの View::TT::ForceUTF8 とか UTF8Columns とかいろいろ使って、今のプロジェクトを UTF8 化中。
さっき Catalyst::Plugin::Email::Japanese の ForceUTF8 対応版をうぷしといた。
なんかそれぞればらばらに設定しててめんどいなーこれ。
あと $c->req->parameters
などを ForceUTF8 する奴も作ってつかっているのだけど、激しく適当で間に合わせもいいところ。これはもう少し仕様考えてから誰も作ってなかったらリリースする。
DBIC::UTF8Columns
昨日のやつ、bast のほうにコミット。次のDBICのリリースに含まれちゃうよ><
使い方はテーブルクラスで
__PACKAGE__->load_components(qw/UTF8Columns Core/);
とかしてロードしておき、
__PACKAGE__->utf8_columns(qw/name description/);
と文字列カラムを指定。
こうすると $table->name
や $table->get_column('name')
でとってくる値は utf-8 フラグが自動的にたつ。
逆に $table->name( $name );
とかでは utf-8 フラグが落とされてから保存される。
utf8_columns で自分で指定するだけじゃなく、テーブル単位で文字列カラムにすべてに対して有効になる機能もあるといいかも?