/
lister.rb
32 lines (26 loc) · 867 Bytes
/
lister.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require 'borg/finder'
require 'borg/util'
module Borg
# This page is responsible for extracting list of valid pages from
# folders.
class Lister
include Borg::Util
def list(path,base_folder, recursive = true)
finder = Borg::Finder.new
res = []
rpath = root(path, base_folder)
if File.directory?(rpath)
res << finder.find_and_prune(path, base_folder)
if recursive
Dir.new(rpath).
entries.
reject { |e| !File.directory?(rpath + "/" + e) }.
reject { |e| e =~ /^\./ }.
each { |e| res << list(path.clone << e,base_folder, recursive)} # recursion
end
end
res = res.flatten.sort_by { |rpath| test(?M, rpath) }.reverse
return res;
end
end
end