Class: StackOperations::MkTree
- Inherits:
-
Object
- Object
- StackOperations::MkTree
show all
- Defined in:
- lib/mk_stack/mk_stack.rb
Instance Method Summary
collapse
Instance Method Details
#mk_dir_tree(dir, current_level = 1, max_level = 2, dirs_only: false) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/mk_stack/mk_stack.rb', line 37
def mk_dir_tree(dir, current_level = 1, max_level = 2, dirs_only: false)
tree = {}
return tree unless File.directory?(dir)
Dir.children(dir).sort.each do |entry|
path = File.join(dir, entry)
is_dir = File.directory?(path)
next if dirs_only && !is_dir
if is_dir
tree[entry] = current_level < max_level ? mk_dir_tree(path, current_level + 1, max_level, dirs_only: dirs_only) : {}
else
tree[entry] = nil
end
end
tree
end
|
#print_tree(tree, is_last_arr = []) ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/mk_stack/mk_stack.rb', line 55
def print_tree(tree, is_last_arr = [])
entries = tree.keys
entries.each_with_index do |entry, idx|
is_last = idx == entries.size - 1
prefix = ""
is_last_arr.each { |last| prefix += last ? " " : "│ " }
prefix += is_last ? "└── " : "├── "
is_dir = tree[entry].is_a?(Hash)
name = is_dir ? "#{entry}/" : entry
puts "#{prefix}#{name}"
if is_dir
print_tree(tree[entry], is_last_arr + [is_last])
end
end
end
|