# ルビつき文支援フィルタ # mt-ruby.pl 0.1alpha # mura@lives.com # http://www.villagewood.net/blog/ # # 使い方 # 漢字(かんじ) # or 漢字(かんじ) # ※ルビ文字のカッコは全角。 # # グローバルフィルタとして使います。 # タグに加える文字列は「ruby="1"」です。 # たとえば、<$MTEntryBody ruby="1"$>などとします。 # # このプログラムは無断で改変、再配布してかまいません # 利用にあたって生じた不具合や損失などについては、muraは一切関知しません。 # 利用者の責任においてご使用ください。 package MT::Plugin::Ruby; use MT::Template::Context; MT::Template::Context->add_global_filter(ruby => \&_ruby); sub _ruby{ my($str, $code, $ctx) = @_; my (@lines, @out); if($code eq '1'){ # 改行の変換 $str =~ s/\x0D\x0A/\n/g; $str =~ s/\x0D/\n/g; @lines = split(/\n/,$str); foreach(@lines){ if(index($_, '') > -1 || index($_, '') > -1){ $_ =~ s/((?:(?!(|!)).)+)(((?:(?!(|!)).)+))/$1<\/rb>(<\/rp>$2<\/rt>)<\/rp><\/ruby>/g; } push @out, $_; } }else{ return $str; } return join "\n", @out; } 1;