Class::ComponentとTemplate-Toolkitを使ったプラグイン書いてみた
Class::Componentを使って、プラグインとしてyamlファイルから読み込み→表示まで作れた。
Class::Componentって何かというと、
Class::Componentは、 Plagger,Catalyst,DBICのプラガブルなところだけ盗んで Class::Accessorみたく他から利用出来るようにしたモジュール
by Presentation source:http://tech.yappo.jp/docs/20071001shibuya.pm/
さっぱり???っていう人はhttp://tech.yappo.jp/docs/20071001shibuya.pm/のプレゼン資料を読んでから
以下のページなどを参考にするといいかと思われます。
- 第1回 Class::Componentから始めるプラガブルモジュール:Perlでプラガブルモジュールを作ろう!|gihyo.jp … 技術評論社
- YappoLogs: Class::Component - プラガブルなモジュールを作る為のベースモジュールの解説
- http://d.hatena.ne.jp/tokuhirom/20080425/1209092626
私もまだまだコードを読み始めたばかりで、構造が理解できずに苦しむ点が多々あります。
Template-Toolkitで値の受け渡しの部分や構造の理解も、ふむふむって感じでコードを読んで理解していってる途中です。
むしろClass::Componentも読み進めるんですが、
Moxyに詳しい人(kanさんことid:mikihoshさん、id:tokuhiromさん)アドバイス頂きたいです;;
Bookmark.pm
package Moxy::Plugin::Bookmark; use strict; use warnings; use base qw/Moxy::Plugin/; use Moxy::Util; use Path::Class; my $bookmark_list; sub register { my ($class, $context) = @_; # pre loading data. { # Load to bookmark.yaml $bookmark_list = $class->_load_yaml($context, 'bookmark.yaml'); } $context->register_hook( control_panel => sub { my ($context, $args) = @_; #$context->log(debug => 'dump http headers'); return $class->render_template( $context, 'panel.tt' => { bookmark => $bookmark_list, } ); } ); } 1; __END__ =head1 NAME Moxy::Plugin::Bookmark =head1 SYNOPSIS - module: Bookmark =head1 DESCRIPTION View of Bookmark. =head1 AUTHOR Akiko Yokoyama
panel.tt
<div> <ul id="bookmark_list"> [% FOR b IN bookmark %] <li> <a href="[% b.value %]">[% b.key %]</a> <br> </li> [% END %] </ul> </div>
bookmark.yaml
--- Yahoo! Mobile: http://mobile.yahoo.co.jp/ goo Mobile: http://mobile.goo.ne.jp/ Google Mobile: http://www.google.co.jp/imode MSN Mobile: http://m.msn.co.jp/ 2ch: http://c.2ch.net 2ch検索: http://is.2ch.net イカスミ: http://ika.tv/ エフルート: http://froute.jp/ モバゲー: http://mbga.jp/