[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.5.3 記事の表示

`shimbun.el' に定義された shimbun-article メソッドは、ヘッダ 情報から Xref を取り出し、その URL のウェブページのソースを取得した後に、 そのソースを入れたワーキングバッファの中 で shimbun-make-contents を呼びます。具体的な記事の加工 は shimbun-make-contents の仕事です。

記事となるウェブページのソースが、どばっとワーキングバッファにぶちまけら れていると想像して下さい。`shimbun.el' の標準 の shimbun-make-contents は、そのバッファの先頭にまずヘッダ情報を 挿入し、その直後に `<html>' や `<body>' などを、また、バッファ の末尾に `</body>', `</html>' を挿入してくれます。そうやっ て HTML メールとして表示させるのです。

記事を何も加工する必要がなければ `sb-foobar.el' の中で は shimbun-make-contents について新たに定義する必要はありません。

単純に記事の前後に捨てたい部分があるだけならば、 shimbun-foobar-content-start, shimbun-foobar-content-end に捨てたい部分を検索可能な正規表現を指 定しておきましょう。

 
(defvar shimbun-foobar-content-start "^$")
(defvar shimbun-foobar-content-end "^<\/body>$")

標準の shimbun-make-contents から 呼び出された shimbun-clear-contents は、これらの正規表現を利用し て、point-min から shimbun-foobar-content-start まで、 shimbun-foobar-content-end から point-max までを切り捨てて くれますよ。但し、これら二つのマッチはいずれかが成功しないと切り捨ては行 われませんので注意が必要です。

広告などの不要な情報があって、それを細かく検索して捨てたい場合は、 `sb-foobar.el' の中で独自の shimbun-clear-contents を定義し ておきます。

 
(luna-define-method shimbun-clear-contents :around ((shimbun shimbun-foobar)
                                                    header)
  ;; cleaning up
  (while (re-search-forward "..." nil t nil)
    (delete-region (match-beginning 0) (match-end 0)))
  (luna-call-next-method))

より具体的な方法は、`sb-ibm-dev.el' が参考になるかもしれません。

先程、9.5.2 ウェブページのソース及びヘッダ情報を取得する の節で、記事毎に個 別に URL を持たない構造のウェブページの場合、ヘッダ情報取得の段階で、記 事の内容も取得しておき、Emacs のメモリに収めておく必要があると申し上げま した。この場合、`shimbun-article' では上記のような Xref 情報から の web page の取得は必要になりませんので、ただ Emacs のメモリから取り出 して、バッファに整形して挿入すれば足ります。具体的に は `sb-palmfan.el', `sb-dennou.el', `sb-tcup.el' の `shimbun-article' メソッドの定義を参照して下さ い。



This document was generated by TSUCHIYA Masatoshi on November, 3 2005 using texi2html