tree_uzuki 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/tree/tree_render.rb +44 -0
- data/lib/tree/walker.rb +29 -0
- data/lib/tree.rb +23 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 64ab423150b490a350c777584e9c5729d87fcd2065d25a1fe3d4bdbb46c5553f
|
4
|
+
data.tar.gz: 92c435ad2a2e334c049b836e20cd17a4e9798f8c5440af81b3fe0f4d30bccf9c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a7da5b0e271448d1b59966ecde9b673f01592cb8ecefdd21284c14a0bed8af9fa3ebb1468e1b61d933e92bb1e7a7ccdd0498488ea059dbbc24ef9e057cb6de9d
|
7
|
+
data.tar.gz: 5649e69a63d602c79e6e2f71f03ba8580470a135956a58ec51b3880cc7ef0d2042cefb563d2feefb12c04a12089d9ed26e8c8fa2ad81f4c232018235bce7401f
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
|
4
|
+
class Tree_render
|
5
|
+
def render(tree_data,root)
|
6
|
+
final_hash = {}
|
7
|
+
branch = "├── "
|
8
|
+
pipe = "│ "
|
9
|
+
turn = "└── "
|
10
|
+
space = " "
|
11
|
+
|
12
|
+
tree_data.sort!
|
13
|
+
i = tree_data.length
|
14
|
+
loop do i-=1
|
15
|
+
break if i == -1
|
16
|
+
leaf_level = tree_data[i].to_s.count('/') - root.to_s.count('/')
|
17
|
+
final_hash[i] = Array.new
|
18
|
+
if leaf_level == 1
|
19
|
+
final_hash[i] << branch
|
20
|
+
final_hash[i] << File.basename(tree_data[i])
|
21
|
+
else
|
22
|
+
final_hash[i] << space
|
23
|
+
(leaf_level-2).times {final_hash[i] << space}
|
24
|
+
final_hash[i] << branch
|
25
|
+
final_hash[i] << File.basename(tree_data[i])
|
26
|
+
end
|
27
|
+
for index in (0..final_hash[i].size)
|
28
|
+
next if final_hash[i+1] == nil
|
29
|
+
if final_hash[i][index] == space && (final_hash[i+1][index] == branch ||
|
30
|
+
final_hash[i+1][index] == pipe ||
|
31
|
+
final_hash[i+1][index] == turn)
|
32
|
+
final_hash[i][index] = pipe
|
33
|
+
elsif final_hash[i][index] == branch && (final_hash[i+1][index] != branch &&
|
34
|
+
final_hash[i+1][index] != pipe &&
|
35
|
+
final_hash[i+1][index] != turn)
|
36
|
+
final_hash[i][index] = turn
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
puts root
|
41
|
+
final_hash = final_hash.each.sort_by{ |k,v| k }
|
42
|
+
final_hash.each { |k,v| puts v.join }
|
43
|
+
end
|
44
|
+
end
|
data/lib/tree/walker.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
|
4
|
+
class Walker
|
5
|
+
def dir_walker (path_array, directories, files, level, tree_data)
|
6
|
+
level += 1
|
7
|
+
folders_arr = []
|
8
|
+
for i in (0..path_array.length-1)
|
9
|
+
if path_array[i].file?
|
10
|
+
files += 1
|
11
|
+
next
|
12
|
+
else
|
13
|
+
directories += 1
|
14
|
+
path_array[i].each_child do |dir|
|
15
|
+
folders_arr << dir
|
16
|
+
tree_data << dir
|
17
|
+
path_array[i] = dir
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
if folders_arr.empty?
|
22
|
+
tree_data << "#{directories} directories, #{files} files"
|
23
|
+
return tree_data
|
24
|
+
|
25
|
+
else
|
26
|
+
dir_walker(folders_arr, directories, files, level, tree_data)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/tree.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'tree/walker'
|
3
|
+
require 'tree/tree_render'
|
4
|
+
|
5
|
+
class Tree
|
6
|
+
def self.runner(root = Dir.pwd)
|
7
|
+
level = 0
|
8
|
+
tree_data = []
|
9
|
+
directories = 0
|
10
|
+
files = 0
|
11
|
+
path_array = []
|
12
|
+
root = Pathname.new(root)
|
13
|
+
root.each_child do |dir|
|
14
|
+
path_array << dir
|
15
|
+
tree_data << dir
|
16
|
+
end
|
17
|
+
tree_data = Walker.new.dir_walker(path_array, directories, files, level, tree_data)
|
18
|
+
files = tree_data.last
|
19
|
+
tree_data.pop
|
20
|
+
Tree_render.new.render(tree_data, root)
|
21
|
+
puts files
|
22
|
+
end
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tree_uzuki
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sunset Uzuki
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-06-03 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Directory tree
|
14
|
+
email: 10seansov@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/tree.rb
|
20
|
+
- lib/tree/tree_render.rb
|
21
|
+
- lib/tree/walker.rb
|
22
|
+
homepage: https://rubygems.org/gems/Tree_uzuki
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubygems_version: 3.0.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Tree
|
45
|
+
test_files: []
|