Hatena::ブログ(Diary)

HM stream

 | 

2006-10-10

Copy URL+ 1.3.2の %*_HTMLIFIED% のコピー結果に塵が混ざる件

Copy URL+の話。たとへばかういふ設定:

user_pref("copyurlplus.menus.1.label", "選擇範圍をHTMLエスケープしてコピー");
user_pref("copyurlplus.menus.1.copy", "%SEL_HTMLIFIED%");

%URL_HTMLIFIED%とか%TITLE_HTMLIFIED%とか、或いはこの例の%SEL_HTMLIFIED%は、その文字列をいはゆる「HTMLエスケープ」してコピーする指定。でもこれ何故か「&」が「&」ではなく「&\1」になってしまって使ひものにならない。

Copy URL+のソースを直接いぢって對處した。問題のある箇所は、copyurlplusOverlay.jsの204行目。インストールの場合はプロファイルディレクトリextension/{F78DC607-BB30-4e13-9E47-2C2E162E9094}/chrome/copyurlplus.jarの中にある。(因みにEmacsの場合特に何もしなくてもjarファイルの中身を直接編輯出來る。更に因みにjarファイルの正體はzipファイル。)

Index: copyurlplusOverlay.js
===================================================================
RCS file: /cvs/copyurlplus/src/copyurlplus/content/copyurlplus/copyurlplusOverlay.js,v
retrieving revision 1.7
diff -u -r1.7 copyurlplusOverlay.js
--- copyurlplusOverlay.js	18 Apr 2005 14:04:38 -0000	1.7
+++ copyurlplusOverlay.js	10 Oct 2006 12:16:45 -0000
@@ -201,9 +201,10 @@
 	//~ KEYS['%RLINK_DOUBLEQUOTED%'] =  '"' +  link.replace(/"/g, '\\"' ) + '"'  ;

 	var re_htmlify = new Array();
-	re_htmlify["\\&(?!(\\w+[;]|#[0-9]+[;]))"] = '&\\1';
+	re_htmlify['&'] = '&';
 	re_htmlify['"'] = '"';
 	re_htmlify['<'] = '&lt;';
+	re_htmlify['>'] = '&gt;';

 	// proper HTML text
 	KEYS['%SEL_HTMLIFIED%'] = bulkReplace(KEYS['%SEL%'], re_htmlify);

ついでなので「>」が「&gt;」に變換されない件も修正。また、オリジナルの正規表現だと「&amp;」の「&」はエスケープされず「&amp;」のままコピーされる。re_htmlify['&'] = '&amp;';で問題無いと思ふのでそのやうにしてみた。

この件はバグだと思ふのだけど何で未だに放置されてゐるのかしら(現最新版であるCopy URL+ 1.3.2のリリースは2005年11月)。「\1」にせよ「>」にせよ直ぐに見附かる問題だと思ふし、のとほり修正も簡單なのに。もし作者が氣づいてゐない問題なら報告したはうが良いのだらうけど生憎英語は全く出來ないので如何ともしい……。

テスト用文字列
& " < >
&amp; &quot; &lt; &gt;
 | 

MORIYAMA Hiroshi <hiroshi@kvd.biglobe.ne.jp>