タイトル | : RubyForTPZのHtmlOut.rbを改造 |
投稿日 | : 2008/02/15(Fri) 18:38 |
投稿者 | : Eclipse |
こんにちは。 TaskPrizeは長年愛用していて、昨年末からRubyの勉強を始めたのでRubyForTPZをちょこちょこいじり始めました。 添付スクリプトのHtmlOut.rbはTPZのアイテムをHTMLで出力できますが、本文中にhtmlのタグがあった場合に出力されたHTMLでもタグとして認識されてしまい、 本文をすべて表示することが出来ません。 本文は<pre>...</pre>で囲んで出力しているので、空白や改行はそのまま表示されますが、htmlの特殊文字は表示されません。 そこでそこで特殊文字を変換するメソッドを作って、TaskPrizeのデータを書き込んでいる部分にそのメソッドを追加します。 まずはメソッドを作ります。 #====================================================================== #(<,>,&,",')をhtml特殊文字に変換するメソッド def change_special_chrs(chr) chr.gsub!(/[<>&"']/) do |m| case m when "&" "&" when "<" "<" when ">" ">" when '"' """ when "'" "'" end end return chr end #====================================================================== 次に先のメソッドを使ってソースを書き換えます。 ソースを書き換えた部分は以下の通りです。 ----------------------------------------------------------------------- (76): print " / ", change_special_chrs((tpz_current_folder).title) (163): print "<LI><A HREF=\"#", item.message_id, "\">", change_special_chrs(item.title), "</A></LI>" (183): print "<A NAME=\"", change_special_chrs(item.message_id), "\"></A>\n" (185): print "<H1>", change_special_chrs(item.title), "</H1>\n" (187): print "<H2>", change_special_chrs(item.title), "</H2>\n" (195): print "<PRE>\n【", change_special_chrs(doc.title), "】\n</PRE>\n" (197): print "<PRE>\n", change_special_chrs(doc.text), "\n</PRE>\n" ----------------------------------------------------------------------- これで本文中などにHTMLでタグとして認識される文字があっても、問題なく出力されるようになります。