IncrementalFilter4LDRize の array.some
ざらっとしか見てないけど,インクリメンタルサーチのやつ,IF4L.searchの中の2つ目のary.forEachはary.someでもよさそう.たいした差はないけど.あと,$Xはwindow.minibuffer.$Xにあるやつ使ったらだめ?
http://twitter.com/snj14/statuses/1847303219
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Array/some
var someElementPassed = array.some(callback[, thisObject]);
function isBigEnough(element, index, array) { return (element >= 10); } var passed = [2, 5, 8, 1, 4].some(isBigEnough); // passed は false passed = [12, 5, 8, 1, 4].some(isBigEnough); // passed は true
some 知らなかった! 配列を受け取って真偽を返すのか. これってtrueを返した時点でforのループがとまるから無駄な評価をしなくていいのか。おかげでソースがスッキリしたし勉強になった
http://twitter.com/jimo1001/status/1848046309
ldrizeのパラグラフをgrep、sortとかもできたらかっこよさそう
http://b.hatena.ne.jp/fuba/20090519#bookmark-13532357
http://d.hatena.ne.jp/jimo1001/20090519
IF4L.prototype.search = function(){ var str = $X("id('IF4L_input')")[0].value; var ary = str.split(" "); this.nodes.forEach(function(node){ var regFunc = function(s){ return node.textContent.match(new RegExp(s, "i")); } node.style.display = (ary.some(regFunc)) ? "block" : "none"; }); }
うお、めっちゃシンプルになっとる。
var setEvent = function(i, p){ window.Minibuffer.addShortcutkey({ key: 'C-c f', description: 'IncrementalFilter4LDRize', command: function(e){ i.focus(); } });
どうせショートカット決めるなら display:none と display:block & focus にすると更に良さそうだなあ。だってどうせ LDRize が ON なら有効になっているというのは自明なんだもん。