Filter::YomiHiraGana 人生に必要な知恵はすべてPla(ry
よみがな(平仮名)を付けるFilter::YomiHiraGana。id:lestrratさんのText::MeCabを使っています。
まだ漢字を読めないお子様もこれで大丈夫。インターネットで漢字を楽しく勉強できます。幼稚園や小学校にPlaggerをぜひ導入しましょう。
- 作者: ロバートフルガム,Robert Fulghum,池央耿
- 出版社/メーカー: 河出書房新社
- 発売日: 1996/03
- メディア: 文庫
- 購入: 6人 クリック: 89回
- この商品を含むブログ (30件) を見る
package Plagger::Plugin::Filter::YomiHiraGana; use strict; use base qw( Plagger::Plugin ); use Text::MeCab; use Unicode::Japanese; sub register { my($self, $context) = @_; $context->register_hook( $self, 'update.entry.fixup' => \&update, ); } sub update { my($self, $context, $args) = @_; my $title = $args->{entry}->title; my $body = $args->{entry}->body; $title = $self->add_hiragana($title); $body = $self->add_hiragana($body); $args->{entry}->title($title); $args->{entry}->body($body); } sub add_hiragana{ my ($self,$string) = @_; my $mecab = Text::MeCab->new(); my $hiragana_string; for (my $node = $mecab->parse($string); $node; $node = $node->next) { my $kana = (split(',',$node->feature))[7]; my $s = Unicode::Japanese->new(); my $code = $s->getcode($node->surface); my $hiragana = $s->set($kana)->kata2hira->get; if($hiragana && $hiragana ne "*" && $hiragana ne $node->surface && $kana ne $node->surface && $code ne "ascii"){ $hiragana_string .= $node->surface."($hiragana)"; }elsif($code ne "unknown"){ $hiragana_string .= $node->surface; } } $hiragana_string; } 1; __END__