置換してみるテスト

http://mayokara.info/note/view/118
トラックバック貰ったので何となく使い方を適当に試してみたxyzylisp風味の関数名。

replaceBuffer = function(pattern,replacement){
	Array.forEach(document.getElementsByTagName("*"), function(v){
		Array.forEach(v.childNodes, function(v){
			if (v.nodeType == 3) {
				var re = RegExp(pattern);
				if(v.nodeValue.match(re)){
					v.nodeValue = v.nodeValue.replace(re,replacement);
				}
			}
		});
	});
}

 こういう風にするのが普通なのかな。何となく、xyzzyで言う所のバッファが付く関数が尽くないような気がしたので色々試しにやってみてもいいかと思った。ただ、これはこのままだとhtmlで置換は出来ないらしい。あと、タグが入れ子になってると何かと都合が悪いので*1、何か変えないと。すごく・・・大変そうです・・・。でも、その前にテストしやすいようにすることにした。

■適当な追記

while(window.find("hoge",false,false,true)){
	var s = window.getSelection();
	var r = sele.getRangeAt(0);
	r.surroundContents(document.createElement("h1"));
}

できたら、firefoxだけでいいからコレくらい簡単な感じで何とかならないかと思ったけど、よく分からないけど実行すると、激しく画面が移動して、何か違う感じ。findは一度だけしか調べない用途なんだろうか。それともsave-excursion見たいなので、先に何かしておくのかもしれないけど。

*1:例えば"<strong>hoge</strong>は"というのを"hogeは"では検索出来ない