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までの値が予約されています)
DOM Samples /Core Node/nodeType - [JavaScript]All About
たとえば、divタグやaタグなどのエレメント(ELEMENT_NODE)は1を、文字列(TEXT_NODE)は3を、タグ内の属性(ATTRIBUTE_NODE)は2 を返します。
obj.getAttribute、obj.nodeValueとobj.textは?