node.js 便利ですね。コマンドツールはruby よりこっちで作ったほうが楽なことも・・・
encodeURIComponentを使ってブックマークレットをサクッと作る
bookmarkletize
#!/usr/bin/env node var path = require('path'); str = process.argv[2]; if(str) { console.log("javascript:"+encodeURIComponent(str)); }else{ process.stdin.resume(); process.stdin.setEncoding('utf8'); var lines = [] // 標準入力がくると発生するイベント process.stdin.on('data', function (chunk) { lines.push(chunk.trim()) }); // EOFがくると発生するイベント process.stdin.on('end', function () { str = lines.join("\n") console.log("javascript:"+encodeURIComponent(str)); }); }
まぁ、これはOSX ならテキストサービスでエディタのマクロチックに使えるように作れるんだけど、コマンドのほうが管理しやすくていいかなと思います。
エンコーディングされた文字を元に戻すには
decodeURIComponentを使います。
cat some.js | bookmarkletize | decodeURIComponent | js-beautify -f -
ちょっと冗長だけど、コレがお手軽→js の関数をコマンドとして使う
bookmarklet にする前にjsを圧縮したい
uglifyjs を使います。
cat some.js |uglifyjs | bookmarkletize
uglifyjs コマンドを使う。これは、npmでインストール
npm install -g uglify-js