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