bookmarkletを使って参照中のページへリンクするTracLink文字列を作成する

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]["']

になります。

Categorized: Trac

Comments are closed.