minibuffer の grep command

	// list of node or list of string => list of node or list of string
	// args: 'regexp' 'attribute' 'flag'
	window.Minibuffer.addCommand({
		name: 'grep',
		command: function (stdin) {
			var regexp = this.args.shift();
			var attr = this.args.shift();
			var flag = this.args.shift();
			var re = new RegExp(regexp, typeof(flag) != 'undefined' ? flag : regexp.toLowerCase() == regexp ? 'i':'');
			return stdin.filter(function(obj) {
				if(typeof(obj) == 'string'){
					return obj.match(re);
				}else if(obj.nodeType == 3){
					return obj.nodeValue.match(re);
				}else if(obj.nodeType == 1 && attr && obj.getAttribute(attr)){
					return obj.getAttribute(attr).match(re);
				}else if(obj.nodeType == 1 && obj.text){
					return obj.text.match(re);
				}
			});
		}
	});

つづくよー。

obj.nodeTypeは、

数値 短整数型 (200までの値が予約されています)
たとえば、divタグやaタグなどのエレメント(ELEMENT_NODE)は1を、文字列(TEXT_NODE)は3を、タグ内の属性(ATTRIBUTE_NODE)は2 を返します。

DOM Samples /Core Node/nodeType - [JavaScript]All About

obj.getAttribute、obj.nodeValueとobj.textは?