jAutoPagerize を軽量化したいなあ + パッチ

この記事は筆者が見た夢を一人称視点で叙述した内容です。事実ではなく、実際の人物等とは一切関係ありません。

ユーザースクリプト版のAutoPagerizeは、400KB近いテキストデータをページを読み込むたびに解析・実行(eval)しています。

AutoPagerizeを軽量化するアイデア - 0xFF

jAutoPagerize も同じだった。 JSDeferred で非同期処理になってるけど。

拡張版を試してみてもいいんだけど、 jAutoPagerize だとはてなスターにもよきにはからってくれるので、こっちのほうが好きなんだなあ。

AutoPagerizemicroformats でパターンを追加できるので、それで十分かなあ、って考えている。 microformats のパターンを追加していったときのコストがどれほどのものかわからないけど、少なくともページ読み込み毎に400KB近いデータを eval するよりは安心だという希望的観測のもとで。

なので、パッチをあてた。

--- jautopagerize.user.js.orig	Thu Oct 22 00:15:30 2009
+++ jautopagerize.user.js	Thu Oct 22 00:08:24 2009
@@ -467,22 +467,22 @@
 			function parseSiteInfo (data) {
 				var siteinfo = [];
 				try {
-					switch (url_info.format.toUpperCase()) {
-						case 'JSON':
-							siteinfo = eval(data).map(function(i) { return i.data });
-							break;
-						case 'HTML':
-						default:
-							var d = createDocumentFromString(data);
-							$X(".//*[@class='autopagerize_data']", d).forEach(function (e) {
+					//switch (url_info.format.toUpperCase()) {
+						//case 'JSON':
+							//siteinfo = eval(data).map(function(i) { return i.data });
+							//break;
+						//case 'HTML':
+						//default:
+							//var d = createDocumentFromString(data);
+							//$X(".//*[@class='autopagerize_data']", d).forEach(function (e) {
 								// using replace as scan and folding key/value to i
-								var i = {}; e.value.replace(/^\s*([^:\s]+)\s*:\s*(.*)$/gm, function (m, key, value) {
-									i[key] = value;
-								});
-								siteinfo.push(i);
-							});
-							break;
-					}
+								//var i = {}; e.value.replace(/^\s*([^:\s]+)\s*:\s*(.*)$/gm, function (m, key, value) {
+									//i[key] = value;
+								//});
+								//siteinfo.push(i);
+							//});
+							//break;
+					//}
 				} catch (e) {
 					alert(e);
 				}

parseSiteInfo を能無しにしただけ。いかにもやっつけでやりました、って感じだけど、実際そうだから仕方が無い…。
YouTube とかニコニコ動画とかのパターンを追加してあげるとよい感じになるかもしれない。

余談だけど、生まれてはじめて diff 使った…。でもシェルで見ると見づらいね。あたりまえか…。 diff ブラウザみたいのがあるなら、それを使わないとやってられないかんじですね。