omae です。
ブラウザで見てるページを TracWiki ですぐにリンクしたいな…というときに使っている bookmarklet を紹介します。といっても TracLink 形式の文字列を作って window.prompt()
で表示するだけのものです。
javascript:(function(t,u){if(/\]|^[%22']/.test(t)){if(!/^%22/.test(t)&&!/"\]/.test(t)){t='%22'+t+'%22'}else%20if(!/'/.test(t)&&!/'\]/.test(t)){t=%22'%22+t+%22'%22}else{t="'"+t.replace(/'/g,'')+"'"}}prompt('copy','['+u+'%20'+t+']')})(document.title.replace(/[\x00-\x1f]+|^\s+|\s+$/g,''),location.href)
適当なページでこの bookmarklet を実行すると TracLink 形式の文字列が window.prompt()
で表示されるので、コピーしてください。Firefox では windows.prompt()
の代わりに window.alert()
でもよいと思います。(選択可能なので)
この bookmarklet の内容ですが、まず TracWiki では [URL label]
という形式でリンクを作成することが出来るようになっています。
[
で始まって ]
で終わりを表すようになっているわけですので、label に ]
を含んでいる場合にはそのまま書くことは出来ません。このような場合には
[http://example.com/ "Apple]["]
[http://example.com/ 'Apple][']
というようにして double-quote もしくは single-quote で囲ってあげることで記述できます。
囲われているかどうかは label 部分が double-quote もしくは single-quote で開始しているかどうかで判断されるので、double-quote で開始しているなら sinlge-quote で囲い、single-quote で開始しているなら double-quote で囲います。
とは言っても label で表現したい文字列が
"'Apple']["
というような場合、囲ったりするだけではどうしようもないのでこの bookmarklet ではそのような場合には single-quote '
を除去して single-quote で囲うようにしてあります。
ちなみにこの場合に bookmarklet から得られる文字列は
[http://example.com/ '"Apple]["']
になります。