Class: Findler::Filters

Inherits:
Object
  • Object
show all
Defined in:
lib/findler/filters.rb

Class Method Summary collapse

Class Method Details

.directories_first(paths) ⇒ Object

directories first, then files



9
10
11
# File 'lib/findler/filters.rb', line 9

def self.directories_first(paths)
  preserve_sort_by(paths) { |ea| ea.directory? ? -1 : 1 }
end

.files_first(paths) ⇒ Object

files first, then directories



4
5
6
# File 'lib/findler/filters.rb', line 4

def self.files_first(paths)
  preserve_sort_by(paths) { |ea| ea.file? ? -1 : 1 }
end

.order_by_mtime_asc(paths) ⇒ Object

order by the mtime of each file. Oldest files first.



14
15
16
# File 'lib/findler/filters.rb', line 14

def self.order_by_mtime_asc(paths)
  preserve_sort_by(paths) { |ea| ea.mtime.to_i }
end

.order_by_mtime_desc(paths) ⇒ Object

reverse order by the mtime of each file. Newest files first.



19
20
21
# File 'lib/findler/filters.rb', line 19

def self.order_by_mtime_desc(paths)
  preserve_sort_by(paths) { |ea| -1 * ea.mtime.to_i }
end

.order_by_name(paths) ⇒ Object

order by the name of each file.



24
25
26
# File 'lib/findler/filters.rb', line 24

def self.order_by_name(paths)
  preserve_sort_by(paths) { |ea| ea.basename.to_s }
end

.preserve_sort_by(array, &block) ⇒ Object



33
34
35
36
37
38
# File 'lib/findler/filters.rb', line 33

def self.preserve_sort_by(array, &block)
  ea_to_index = Hash[array.zip((0..array.size-1).to_a)]
  array.sort_by do |ea|
    [yield(ea), ea_to_index[ea]]
  end
end

.reverse(paths) ⇒ Object

reverse the order of the sort



29
30
31
# File 'lib/findler/filters.rb', line 29

def self.reverse(paths)
  paths.reverse
end