At Sun, 15 Jun 2003 08:35:17 +0900,
NAKAJIMA Mikio <minakaji@namazu.org> wrote:
> sb-cnet-rss.el の date, message-id の作り方が生きていなかったので、
> 少し手を入れさせていただきました。
> (snip)
> 後で変更点について、じっくり書きます。
(1)shimbun-rss-get-date を shimbun-rss-process-date と改名し、(国島さ
んに教えてもらった "Dublin Core" というキーワードから
http://www.w3.org/TR/NOTE-datetime で説明している ISO 8601 にたどり
ついたので) ISO 8601 format の文字列を MUA で利用する Date format
に加工するメソッドを sb-rss.el の中に入れました。
ISO 8601 に対応していない RSS の場合は各 backend でその処理のため
に shimbun-rss-process-date メソッドを書きます。
あら? http://mag.autumn.org/ の RSS の中にある
<date xmlns="http://purl.org/dc/elements/1.1/">2003-06-13T15:10:33Z</date>
の秒の後ろの Z って何だ?
(2)sb-rss.el の shimbun-get-headers 中で、message-id の重複を調べるよ
うにしました。catch and throw で一気に処理を止めてしまわないのは、
XML 処理した記事 list が必ずしも新しいもの順に並んでいると確信が持
てなかったためです。
(3)sb-rss.el の shimbun-get-headers 中で、shimbun-rss-build-message-id
を呼ぶようにしました。message-id だけは各 backend の中でメソッドを
呼んで、それぞれ unique なものになるようにするしかないのではないで
しょうか?
(4)必ずしも XML の中で author や creator が宣言されていないようで、そ
ういう場合に nobody になってしまうので、from を得るために、最後に
shimbun-from-address を呼ぶようにしました。
(5)(2)と矛盾するようですが、自分が見た範囲では、記事は新しいもの順に並
んでいるので、 shimbun-get-headers の最後で headers を nreverse す
るようにしました。これで日付の新しい記事の記事番号に、より大きい番
号が振られます (古いもの順に並んでいる RSS があれば、その専用
backend で shimbun-get-headers :after method-qualifier 付きで宣言し
て headers を再度 nreverse できる?)。
xml.el は、
(let (v)
(dolist (c '(#x00B7 #x02D0 #x02D1 #x0387 #x0640 #x0E46 #x0EC6 #x3005
#x3031 #x3032 #x3033 #x3034 #x3035 #x309D #x309E #x30FC
#x30FD #x30FE))
(setq v (cons (decode-char 'ucs c) v)))
v)
が
(nil nil nil nil nil nil nil nil nil nil nil nil ...)
になってしまうために、modify-syntax-entry の引数に nil が渡ってしまい
エラーになるのでした。decode-char を別途提供してくれている Mule-UCS と
ぶつかってるんだな、きっと。Mule-UCS の Mule-UCS-current を再度入れて
試したんですが、やはり駄目だったので (RSS で UTF-8 を扱う以上 Mule-UCS
を使わないわけにもゆきませんし)、xml.el の該当の部分をコメントにして、
site-lisp に入れて動かしています。
Attachment:
xml.el.diff
Description: Binary data
-- 中島幹夫 <minakaji@namazu.org> home: http://www.asahi-net.or.jp/~gy2m-nkjm diary: http://slashdot.jp/journal.pl?op=display&uid=5767