Under the Bridge

a Picture of the Late Him

世界のナベアツをプラグインで表現

2008年4月13日 18:32 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

perlでプラグインを書く練習として、これに取り組んだ。このお題は、某コミュでそれなりに盛り上がっているようだが、プラグインでこれを実現するのはコミュ用という意向ではない(誰かの参考になるかと思って、結局はポストしたが)。あくまで、Perlの練習。

テンプレートのコード

劇的に短くなる。

<ul>
<MTFor var="x" from="1" to="40">
<li><MTGetVar name="__counter__"> = <MTNabeAzz number="$__counter__"></li>
</MTFor>
</ul>

プラグインのコード

nabeazz.plなどと名前をつけてpluginsフォルダへ放り込めばOK。

※Perlは昨日初めて触った。なのでコードがあっているのかどうかなどはようわからん。でも一応うまく動いてはいる。

package MT::Plugin::NabeAzz;
use base 'MT::Plugin';

use strict;

use MT;
use MT::Template::Context;
use MT::Plugin;
use utf8;

my $plugin = MT::Plugin::NabeAzz->new({
    id => 'NabeAzz',
    name => 'Nabe Azz',
    version => '1.00',
    author_name => "<MT_TRANS phrase=\"apstar\">",
    author_link => 'http://www.apstars.com/blog/',
    description => "<MT_TRANS phrase=\"Nabe Azz plugin.\">",
});
MT->add_plugin($plugin);

sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        tags => {
            function => {
                'NabeAzz' => \&nabe_azz,
            },
        },
    });
    
}

sub nabe_azz {
    my ($ctx, $args) = @_;
    my @aho = ('Aho1','Aho2','Aho3','Aho4','Aho5','Aho6','Aho7','Aho8','Aho9','Aho10');
    my @inu = ('Inu1','Inu2','Inu3','Inu4','Inu5','Inu6','Inu7','Inu8','Inu9','Inu10');
    my $count = 10;
    my $ahoindex = int(rand($count));
    my $inuindex = int(rand($count));
    my $num = $args->{number};
    my $out = '';

    $out .= $aho[$ahoindex] if ($num % 3 == 0 or $num =~ /3/);
    $out .= $inu[$inuindex] if ($num % 5 == 0 or $num =~ /5/);
    
    $out = $num if (!$out);
    $out;
}

1;

トラックバック(0)

このブログ記事を参照しているブログ一覧: 世界のナベアツをプラグインで表現

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)