今の Amalgam の曖昧検索と Chemr の補完
r = /(#{str.split(//).map {|c| Regexp.escape(c) }.join(").*?(")})/i
@now.concat @candidates.select {|i|
r === i.name
}.sort_by {|i|
# 文字が前のほうに集っているほど高ランクになるように
m = r.match(i.name)
(0...m.size).map {|i| m.begin(i) }.inject {|p,i| p + i }
}もっとうまくかけるかな、というかいいアルゴリズムあるかな……(Chemr にもうつそう)
いまつかってるかぎりだとけっこういい感じ
- adp
- Adobe Photoshop
- fi
- Finder
- dip
- Displays.prefPane
- dis
- Displays.prefPane
- thu
- Thunderbird
- safa
- Safari
- tem
- Terminal
- trm
- Terminal
- itu
- iTunes
みたいにそれっぽくトップにくる。てきとうにうってもあたるのはやっぱいいなぁ。QS もそうだけど
あと Chemr で TAB おしたときに
keys[0].zip(*keys[1..-1]) do |a|
m = a.first.downcase
if a.all? {|v| v && (m == v.downcase)}
common << m
else
break
end
endってやってるけど、もっとうまく書けないかなぁ……要素中の先頭から共通の部分を最長でもってくる……
こういうの考えるの苦手すぎる……すなわち頭が悪いというこなんだけど……