Perlの最近のブログ記事

WebSig24/7::MT分科会::プラグインを作成(藤本壱さん)

参加してきました。

で、プラグインをはじめてつくりました。講師は、プラグイン作者で有名な藤本壱さん。

Perlも、ほとんど書けない人間が、つくれましたよ!プラグイン自体は、半角全角の変換モディファイアというもので、Unicode::JapaneseというPerlのライブラリを使用すると、いわゆる本文は数行で終わるシンプルなものでした。

だからこそ、いろいろプラグイン開発において、細かなところを聞けました。この@_は・・・?とか。my $variablename って・・・とか(笑)

Perlの本を読めば書いてあるし、きっと読んだであろうことだと思うのですが、それでも、気軽に聞ければ、思わぬ発見があったりします。

普段、ロクナナワークショップで教える立場としては、講義を受ける人の気持ちがわかって、目から鱗が剥がれまくりでした。

これは、かなり勉強になります。恥ずかしがらずに質問することが重要ですね。

いろいろと教えてくださった藤本さんに感謝します。ありがとうございました。
そして、こんなワークショップを開催してくれているWebSigとMT分科会のDaikinyさんはじめ、ボランティアで活動していただいているスタッフの方々にも感謝です。

 

で、肝心のプラグインは以下。まだまだ、機能的に甘い点があります。が、いったん公開して、これから詰めたいと思います。

一応、動かすには、コピペしたファイルを.plファイルとして保存し、プラグインディレクトリに入れます。

<MTEntryBody conv_hz="A"> で、全角へ <MTEntryBody conv_hz="a">で半角へコンバートします。
でも、全角にコンバートしちゃうと、htmlタグが全角になっちゃうという問題がありました。詰めが甘いのはご容赦ください。

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

use strict;

use MT::Plugin;
use MT;
use MT::Template::Context;
use MT::I18N qw(encode_text);
use Unicode::Japanese;

# show plugin information to main menu
my $plugin = __PACKAGE__->new({
    name => 'Convert HankakuZenkaku',
    version => '1.00',
    author_name => 'NORI@WebSig',
    author_link => 'http://www.3oclock.com/hello-world/',
    description => 'Convert hankaku - zenkaku',
});
MT->add_plugin($plugin);

# add tag
sub init_registry {
    my $plugin = shift;
    my $reg = {
        tags => {
            modifier => {
                conv_hz => \&convert_han_zen,
            },
        },
    };
    $plugin->registry($reg);
}

# Template of global modifier
# conv_hz="A" to Zenkaku
# conv_hz="a" to Hankaku
sub convert_han_zen {
    my ($text, $arg) = @_;

    my $charset = lc(MT->config->PublishCharset);
    $charset = 'utf8' if ($charset eq 'utf-8');
    my $t = Unicode::Japanese->new($text,$charset);
    if ($arg eq 'A'){
     $t->h2z;
    }
    elsif($arg eq 'a'){
     $t->z2h;
    }
    $text=$t->conv($charset);
return $text;
}

1;

 

  • Comments (Close): 3
  • TrackBack (Close): 1

Perlインストール

たぶんだが、Windows上で動作するPerlといえば、ActivePerlだろうから、とActiveStateへ行く。
JPerlじゃないと、正しい日本語対応ができていないようなので、日本語化前提で、Build508を
ダウンロードした。

参考
Perlの概要 
JPerl 日本語化パッチがある
ActivePerlのダウンロード(Build805にすること)

  • Comments (Close): 0
  • TrackBack (Close): 0

Index of all entries

Feeds
About

supported by TOGORU

Return to page top