ワンランク上のおっさんは,CopyAllUrls を "ttp://" に対応させたいー!
動機
Firefox のアドオンであるCopyAllUrlsには大変お世話になっています。
しかし,
ttp://www.google.co.jp ttp://www.yahoo.co.jp
みたいなんを,どっかからコピーして,'h'を頭につけて,
貼り付けるのは,めんどい。
テキストリンクというアドオンを見つけたけど,
これって,Firefox内のお話だから,ほしいものとは違いまんた。
というわけで,javascriptを知らない私がソースを見てみて,
できそうだったら改造してしまおうという英雄譚。どこがやねん!!
結果
で,なんかすごい対症療法的な気がするけど,できちゃったみたい。ぽっ。
以下,diff 結果。
--- copyallurls.js.org 2009-01-14 20:13:11.783497600 +0900 +++ copyallurls.js 2009-01-14 20:13:54.494913600 +0900 @@ -325,11 +325,15 @@ var sUrl = pastetext; // the following regex is extracting urls from any text - myRe=/((https?):\/\/((?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]|[a-zA-Z])[.]?)|(?:[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+)))(?::((?:[0-9]*)))?(\/(((?:(?:(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*)(?:\/(?:(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*))*))(?:[?]((?:(?:[;\/?:@&=+$,a-zA-Z0-9\-_.!~*'()]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)))?))?)/ig; + myRe=/((h?ttps?):\/\/((?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]|[a-zA-Z])[.]?)|(?:[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+)))(?::((?:[0-9]*)))?(\/(((?:(?:(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*)(?:\/(?:(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():@&=+$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*))*))(?:[?]((?:(?:[;\/?:@&=+$,a-zA-Z0-9\-_.!~*'()]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)))?))?)/ig; myArray = myRe.exec(sUrl); while (myArray) { newUrl = String(myArray[0]); - + + if (newUrl.match(/^ttp/)) { + newUrl = "h" + newUrl; + } + // if current tab does not have any open url we can use it as first tab if (tabcounter == 0){ tabcounter++;
作成手順みたいなん(WindowsXP環境)。
- アドオンが保存されている場所
c:\Documents and Settings\ユーザー名\Application Data\Mozilla\Firefox\Profiles\xxxx.default\extensions\{xxxx}\chrome\content\copyallurls.jar
ま,検索かければ見つかるはず。
このjarファイルは,fileコマンドで見てみると,zipファイルらしいので,
拡張子をzipに変えて伸張しちゃうぞー。
jarコマンドでもいいんだろうけど,CRCエラーとか出た記憶があるので,WinRar使いまんた。
で,でてきた copyallurls.js に上記の変更を加える。
一応バックアップとっておいた方がいいかも。
ほいで,
% jar cvf copyallurls.js content
で,作成完了。
あー,今見たら,Java入れてればjarは入っているみたいなんで,
コマンドプロンプトからでもできるみたいです。
で,Firefoxを起動して確認して,オーケーと。
ソース眺めてみてわかったこととやったこと(間違っているかもしれまへんでぇ)
まず,paste で grep -i してみてそれっぽい関数copyallurls_paste()を見つける。
処理の流れは,クリップボードの中身から,正規表現で,URLとってきて,
それを,newUrlに入れて,ページを開くみたいな。彼氏? ほしい,みたいな。
なので,正規表現でURLを抽出する際,「ttp://」ではじまるのも対象としてほしいので,
「https?」を「h?ttps?」に変更。
このままFirefoxに渡すと,ttpなんちゅうプロトコル知らんぞゴラァ,と
怒られた。
そこで,マッチしたURLが,newUrlに入った段階で,ttpで始まっていたら,
頭に'h'をつけちゃおう作戦。
これでできちゃったっぽいので,よしとします。
他に,dialogs/openurls.js というファイルがあるのが気にはなるが,
今のところ不具合でてないので,このままでいいかなぁと。
まとめ
こういうのって勝手にいじっていいのかな?
あと再配布とか。
ま,お疲れっしたー。