[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

w3m-url-to-file-name / w3m-expand-file-name-as-url (was: Known BUGs and TODOs)



>> On Mon, 19 Mar 2001 10:26:00 +0900 (JST)
>> 「白井」== shirai@rdmg.mgcs.mei.co.jp (Hideyuki SHIRAI (白井秀行)) said as follows:

土> (10) v で bookmark を表示した後、s でヒストリ表示に移動すると、
土>      bookmark に該当するリンク表示が 
土>      about://history/home/user/.w3m/bookmark.html になってしまっている。
土>      これは URL の生成が何処かで間違っているのだと思うが…。

白井> # 実は about:// ってなんなのか全然わかっていないのですが ^_^;

名前付けが悪かったかな…。要は w3m.el の中で適当に使える名前空間を確保
したかっただけです。で、mozilla だと about: でバージョン表示が出るので
すが、その下の空間なら適当に使っても問題になり難そうだと思っただけなん
です。(w3m://... という空間の方が分かりやすかったかしら)


白井> 昨日の夜、Windows で試したときは大丈夫だったのですが、これは、
白井>     "file://c/home/shirai/.w3m/bookmark.html"
白井> という形式になっているからだったのですね。いっそのこと、
白井>     (defun w3m-expand-file-name-as-url (file &optional directory) ...)
白井> にして、local な file は全部 "file://" を頭につけたらどうですか?

なるほど。これが良さそうですね。と修正を始めたところではたと気が付いた
のですが、w3m.el の file: の解釈は間違っているのではないでしょうか。

http://www.ietf.org/rfc/rfc1808.txt に記載されている URI の BNF 定義部
分を本メールの末尾に引用しておきますが、file:///path または file:/path 
でなければならないはずなので、そう修正しました。


2001-03-19  TSUCHIYA Masatoshi  <tsuchiya@pine.kuee.kyoto-u.ac.jp>

	* w3m.el (w3m-url-to-file-name): Fix (Cf. RFC-1808).
	(w3m-expand-file-name-as-url): Ditto.
	(w3m-url-local-p): New function.
	(w3m-goto-url): Set `default-directory' when URL points a local
	file.
	(w3m-find-file): Use `w3m-goto-url'.
	(w3m-w32-browser-with-fiber): Use `w3m-url-to-file-name'.


ただし、Windows 環境が手元にないので、cygdrive などの対応はかなり怪し
いです。動作チェックをお願いします。

# [ELF:00879] で教えて貰った例は全てきちんと変換できることは確認しまし
# たが。


白井> そうすると "M" で netscape とか立ち上げるときや、
白井> w3m-content-type-alist の html に引っ掛かったときは
白井> "file://" を外す、という処理を入れないとおかしくなりますが、内部
白井> 的な統一は取れると思います。

引数として指定された URL をきちんと解析できるプログラムであれば、
file:// は外さなくても良いでしょう。

# というか解析できないプログラムの方のバグだと思う。


白井> # w3m-url-to-file-name() ってあったのね。
白井> # w3m-w32-browser-with-fiber() で無駄なことをしているぞ。^_^;;;

これも併せて修正しておきました。


白井> また、w3m-history() は別の実装を提案しようと思っているのですが、
白井> まだ固まっていないので、それはまた今度。w3m-arrived-db から html
白井> を作成する方向です。どういう順番に並べようかなと思っているのだけ
白井> ど、arrived-time というのを db に突っ込むかな。

arrived-time がきちんと必要なのでしょうか。

もしも、単に訪問した順序だけが必要ならば、訪問済み URL を表す個々のシ
ンボルに割り当てられている一意な順序数を参照すれば良いでしょう。具体的
には、w3m-arrived-add や w3m-arrived-shutdown の実装を参照して貰えば分
かると思います。


土>   --> w3m-find-file や file://URL でローカルのファイルを閲覧している場
土>        合、default-directory も同時に変更していてくれる方が有り難い。

これも対処しました。


土>    --> w3m-filter.

白井> inflate とかですか?

そうではなく、例えば geocities などの Free WEB でついてくるバナー広告
をカットする、などの使い方を考えています。

# inflate は Content-Encoding に関係する話なので、もう少し深い層で処理
# が必要になると思います。


土>    --> [emacs-w3m:00011] などのメーリングリストのヘッダ文字列を自動的に 
土>        URL に変換してジャンプする機能がほしい。

白井> おお、あると便利だけど力づくの作業ですね。:-)

これ思ったんですけど、単に browse-url-url-at-point に advice を定義す
れば出来るような…。
   URL         = ( absoluteURL | relativeURL ) [ "#" fragment ]

   absoluteURL = generic-RL | ( scheme ":" *( uchar | reserved ) )

   generic-RL  = scheme ":" relativeURL

   relativeURL = net_path | abs_path | rel_path

   net_path    = "//" net_loc [ abs_path ]
   abs_path    = "/"  rel_path
   rel_path    = [ path ] [ ";" params ] [ "?" query ]

   path        = fsegment *( "/" segment )
   fsegment    = 1*pchar
   segment     =  *pchar

   params      = param *( ";" param )
   param       = *( pchar | "/" )

   scheme      = 1*( alpha | digit | "+" | "-" | "." )
   net_loc     =  *( pchar | ";" | "?" )
   query       =  *( uchar | reserved )
   fragment    =  *( uchar | reserved )

   pchar       = uchar | ":" | "@" | "&" | "="
   uchar       = unreserved | escape
   unreserved  = alpha | digit | safe | extra

   escape      = "%" hex hex
   hex         = digit | "A" | "B" | "C" | "D" | "E" | "F" |
                         "a" | "b" | "c" | "d" | "e" | "f"

   alpha       = lowalpha | hialpha
   lowalpha    = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
                 "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
                 "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
   hialpha     = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
                 "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
                 "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"

   digit       = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
                 "8" | "9"

   safe        = "$" | "-" | "_" | "." | "+"
   extra       = "!" | "*" | "'" | "(" | ")" | ","
   national    = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`"
   reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "="
   punctuation = "<" | ">" | "#" | "%" | <">
-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )
    http://www-nagao.kuee.kyoto-u.ac.jp/member/tsuchiya/