おおいわです。tDiary は自由度が高くてかなり気に入っております。
ところで、tb-send.rb の送信が失敗した時のエラー処理に
不備があるような気がするのですが、気のせいでしょうか。
送信に失敗した時、urls.length が1の時だけエラー扱いするようになっていますが、
urls はリストではなくて文字列 (URL なので2文字以上) なので、
常に条件が成立しません。
# もしコードの意図がエラー処理をしない、というなら
# raise 文ごと取り除いてしまった方がいいかと。
あと、URL が http ではない時に、やはり黙って無視されている気がします。
せっかく if 文まで入れているならば、エラー処理をしてやってもいい気がします。
この2点について、CVS HEAD に対するパッチ案を添付しておきます。
その他、recent_list.rb と title_list.rb の出力を少し改善?したバージョンが
ありますので、もしよろしければ
http://www.oiwa.jp/~yutaka/tdiary/20050128.html#p04 を御覧ください。
<br> タグを使われると CSS で見た目をフォーマットし辛いので、
<div class="recentsubtitle">...</div> で括るように書き換えてみました。
少なくとも div タグを解釈するブラウザなら、前より悪くなることは
ないと思うのですが、いかがでしょうか。
# ちなみにやりたかったフォーマットは、上記URLの
# 左側のサイドバーにある記事一覧の項目の hanging indent です。
Index: tb-send.rb
===================================================================
RCS file: /cvsroot/tdiary/plugin/tb-send.rb,v
retrieving revision 1.15
diff -u -r1.15 tb-send.rb
--- tb-send.rb 7 Aug 2004 02:47:52 -0000 1.15
+++ tb-send.rb 31 Jan 2005 19:25:21 -0000
@@ -91,7 +91,8 @@
my_url.gsub!( %r|/\./|, '/' )
require 'net/http'
- urls.split.each do |url|
+ urls = urls.split
+ urls.each do |url|
trackback = "url=#{CGI::escape(my_url)}"
trackback << "&charset=#{@tb_send_ping_charset}"
trackback << "&title=#{CGI::escape( @conf.to_native( title ) )}" unless title.empty?
@@ -107,7 +108,6 @@
Net::HTTP.start( host.untaint, port.to_i ) do |http|
response, = http.post( request, trackback,
"Content-Type" => 'application/x-www-form-urlencoded')
-
error, = response.body.scan(%r|<error>(\d)</error>|)[0]
if error == '1'
reason, = response.body.scan(%r|<message>(.*)</message>|m)[0]
@@ -117,6 +117,8 @@
rescue
raise TDiaryTrackBackError.new( "when sending TrackBack Ping: #{$!.message}" ) if urls.length == 1
end
+ else
+ raise TDiaryTrackBackError.new ( "unknown URL: #{url}" ) if urls.length == 1
end
end
end
--
大岩 寛 Yutaka Oiwa 東京大学大学院 情報理工学系研究科
コンピュータ科学専攻 博士課程 米澤研究室
<oiwa@...>, <yutaka@...>
PGP fingerprints: (1) C9 8D 5C B8 86 ED D8 07 EA 59 34 D8 F4 65 53 61
(2) 3C21 17D0 D953 77D3 02D7 4FEC 4754 40C1 995D D3E1
|