Minibuffer + LDRize + ReblogCommand Greasemonkey対応版の作り方

Greasemonkeyにパッチを当てなくても動かす方法はあるのに、なんで誰もコレを言わないのか不思議なんだ。
たしか自分は言ったはず....と思って検索したが日記には見つからず....

Twitter上でぼそっと呟いただけだった。

はい、GreasemonkeyやScriptishでの問題は、それぞれのスクリプトが独自のコンテキストで動くためオブジェクトが共有されないことだった。そのためwindow.Minibufferを参照できない事象が発生していたわけだ。

だったら、同一コンテキストで動くように、concatnatenateしちゃえば良いじゃない

wget http://userscripts.org/scripts/source/11759.user.js -O minibufer.user.js
wget http://userscripts.org/scripts/source/11562.user.js -O ldrize.user.js
wget http://coderepos.org/share/export/39098/lang/javascript/userscripts/reblogcommand.user.js
# reblogcommandにはexcludeがあったので、そのURLを排除するコードを仕込む
sed 's/^(function().*$/&\nif(window.location.href.indexOf("http:\/\/www.tumblr.com\/share")===0) return;/' reblogcommand.user.js
cat {minibuffer,ldrize,reblogcommand}.user.js > mini_ldrize_reblog.user.js
# 最後にE4Xのパッチ当て
sed -i 's/<><!\[CDATA\[/""+&/' mini_ldrize_reblog.user.js

これじゃダメ? そうですか...。

まあ僕は使ってないので、じゃじゃ馬のようにしゃしゃり出てるだけですから良いのだけど、個人的には

と思ってたが、 改めて見てみたらライセンスが不明だった。

フォークしたくてもできない現状があるのかもね。

余談

ではGreasemonkeyにパッチを当てる方法を書いたが、これは他のUserScriptでもそういう場面があるかもしれず、汎用性を目指した結果だった。Minibuffer関連に絞るなら、ファイルを連結するだけでOKなのである。まあReblogCommandみたく特定のページでは実行しないみたいのがあると多少の考慮事項が発生するけどね :p