Sha256: 2ba2d7216a3a8e0018c37e96464bc9afe2dffa66c6f300141814a8c38b474197
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module Prj class Filter def initialize(letters) @letters = letters.to_a end def filter(directories) sort(directories.select { |d| filter_dir(d, @letters) }) end def dispersion(dir) return 0 if dir.empty? || @letters.empty? indices = [] d = dir.dup @letters.each do |letter| idx = d.index(letter) indices << idx d = d[(idx + 1)..-1] end indices.inject(0, &:+) - indices.first end private def filter_dir(dir, letters) if letters.empty? true else letter = letters.first i = dir.index(letter) i && filter_dir(dir[(i + 1)..-1], letters[1..-1]) end end def sort(directories) directories.sort do |d1, d2| disp1 = dispersion(d1) disp2 = dispersion(d2) if disp1 < disp2 -1 elsif disp1 > disp2 1 else if d1.length < d2.length -1 elsif d1.length > d2.length 1 else 0 end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prj-0.0.1 | lib/prj/filter.rb |