« 07.27 18メートル | ココ | 08.02 移動に移動でみんなクタクタ »

2009年7月31日

TWiki日本語大作戦 リターンズ  このエントリーを含むはてなブックマーク 

TWiki 4.2以上でトピックを編集するときに、自動的にWYSIWYGエディタが使われるようになってるんですが、このWYSIWYGエディタを使うと日本語が大変なことになるんですよねー。個人的にはraweditを使えば全然問題ないんで、特に困ってはないんですが、他人も編集するようにするとなってはそうも言ってられず。

Railsのto_jsonメソッドにも同じような問題があるんで、そのときの対応を参考にさくっと直そう…と思ったら全然参考にならんのでやんの。WYSIWYGエディタの場合、raweditと切り替えが出来るんやけども、そのときにプラグインに定義してあるルーチンをAjaxで呼び出しているらしい。

ということで、$TWIKI_HOME/lib/TWiki/Plugins/WysiwygPlugin ディレクトリのHTML2TML/Leaf.pmと、TML2HTML.pmを編集。

$ diff -c HTML2TML/Leaf.pm.bk HTML2TML/Leaf.pm
*** HTML2TML/Leaf.pm.bk 2009-07-31 17:09:34.000000000 +0900
--- HTML2TML/Leaf.pm 2009-07-31 16:55:18.000000000 +0900
***************
*** 64,69 ****
--- 64,70 ----
          $t =~ s/\[/[/g;
      }
      unless ($options & $WC::KEEP_ENTITIES) {
+         $t =~ s/%u([0-9A-F]{4})/chr(hex $1)/ego;
          $t =~ s/&($text_entities_re);/chr($text_entities{$1})/ego;
          $t =~ s/ /$WC::NBSP/g;
      }

$ diff -c TML2HTML.pm.bk TML2HTML.pm
*** TML2HTML.pm.bk 2009-07-31 17:09:09.000000000 +0900
--- TML2HTML.pm 2009-07-31 17:06:04.000000000 +0900
***************
*** 290,295 ****
--- 290,297 ----
      $text =~ s/$TT0(#[0-9]+;)/&$1/go;
      $text =~ s/$TT0([$TWiki::regex{mixedAlphaNum}]+;)/&$1/go;
 
+     $text =~ s/%u([0-9A-F]{4})/&#x$1;/gs; ## append
+
      # Horizontal rule
      my $hr = CGI::hr({class => 'TMLhr'});
      $text =~ s/^---+$/$hr/gm;

TWikiのデコードのほうが楽やった。まぁ最新のでは直ってるのかもしれんけど。

By ただ at 22:11 カテゴリー ; Perl , プログラミングとか

« 07.27 18メートル | 07月の記事 | 08.02 移動に移動でみんなクタクタ »




トラックバック

このエントリーのトラックバックURL:
http://pinmarch.sakura.ne.jp/mt/mt-tb.cgi/1452