それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ブックマークレットを簡単に作るnodeコマンド

node.js 便利ですね。コマンドツールはruby よりこっちで作ったほうが楽なことも・・・

ブックマークレットをサクッと

cat | bookmarkletize | pbcopy

で簡単に作れますね。
cat コマンドで標準入力からコピペして、Ctrl+Dで抜ければオッケー

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