[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Why `w3m-check-refresh-attribute' decodes entities in url?
>> On Fri, 21 Sep 2007 22:25:57 +0900
>> tsuchiya@xxxxxxxxxx (TSUCHIYA Masatoshi) said as follows:
土> で,今回の場合は何が問題かというと,∂ のように,きちんと ; で終
土> 端されているわけでもない &part まで decode してしまっているのが問題な
土> のではないでしょうか.
土> 対応はどうしたらいいかなあと code を追いかけ始めたら,
土> w3m-decode-entities() とか w3m-entity-value() のコードまで整理したく
土> なってきて,頭が混乱してきました.‥‥なんで,こんなにややこしい構造
土> になってるんでしょう?
原因は2点あるみたいですね.
第1は,[emacs-w3m:00023] で導入されている以下の変更.これはまあ,loose
な人ならやってしまうかもしれないので,しょうがない.
>> On Fri, 02 Mar 2001 03:10:14 +0900 (JST)
>> 「後」== gotoh@xxxxxxxxxxx (Shun-ichi GOTO) said as follows:
後> & などのキャラクタエンティティ(エスケープ文字)の置き換え処理をすっ
後> きりさせました。obarrayを使用。また、最後の";"が無い場合(違法?)も考慮
後> するようにバグフィックス。
後> ## 朝日新聞のページで見かけた。
;; でも,これが原因で code が汚くなっているので,support しません!と宣言
;; してしまう誘惑に10分ほど駆られました.
第2は,[emacs-w3m:09187] で導入されている以下の変更.
>> On Tue, 6 Feb 2007 16:39:23 +0900
>> 「青」== nao.aota@xxxxxxxxx ("青田直大") said as follows:
青> formの内容を記憶するためにw3m-form-parse-and-fontifyでdecodeするのは
青> 必須なようなので、w3m-decode-entitiesでname属性を持つtype=textまたは
青> type=selectのinputタグの中を飛ばすパッチを書いてみました。
こちらの方は,なんとか別の方法で回避できるんじゃないかなあと思うのですが.
;; 少なくとも (string-match "/type=\\(text\\|select\\)/name=[^/]+/" fid)
;; は,save-match-data で括っておかないと,その後の match-* がおかしくな
;; るので,それは対処しました.
というか,
(defun w3m-fontify ()
"Fontify the current buffer."
...
;; Remove other markups.
(goto-char (point-min))
(while (re-search-forward "</?[A-Za-z_][^>]*>" nil t)
(let* ((start (match-beginning 0))
(fid (get-text-property start 'w3m-form-field-id)))
(if (and fid (string-match "/type=text\\(?:area\\)?/" fid))
(goto-char (1+ start))
(delete-region start (match-end 0)))))
と fid をチェックしているところと同じで,fid のような w3m-form.el におけ
る内部構造を w3m.el の方で処理しなければならないのは落ち着かない,という
だけのことなんですが.
という細部には目をつぶって,とりあえず以下の修正を commit しました.
2007-09-24 TSUCHIYA Masatoshi <tsuchiya@xxxxxxxxxx>
* w3m.el: Changes to stricten entities decoded by
`w3m-decode-entities'.
(w3m-entity-table, w3m-entity-reverse-table): New constants.
(w3m-entity-regexp): Stricten.
(w3m-entity-alist, w3m-entity-db, w3m-entity-db-size): Abolished.
(w3m-entity-value, w3m-decode-entities, w3m-decode-entities-string,
w3m-encode-specials-string): Rewritten to use the above constants.
これで sb-nytimes.el の問題は解決しているはずですが,いかがでしょう?
--
土屋 雅稔 ( TSUCHIYA Masatoshi )