dire 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dire/dir.rb +8 -8
- data/lib/dire/file.rb +1 -1
- data/lib/dire/module/check.rb +21 -0
- data/lib/dire/module/path.rb +37 -0
- data/lib/dire/module/validity.rb +29 -0
- data/lib/dire/node.rb +5 -6
- data/lib/dire/version.rb +1 -1
- metadata +7 -6
- data/lib/dire/mixin/check.rb +0 -57
- data/lib/dire/mixin/path.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be6f93fb0a1456e69128bc968babaad69ac2a126985441470660d3e6467b383c
|
4
|
+
data.tar.gz: 560ead570a52d7fa967c7b54290b17875fc0d7568d95178547c6b787d0a534c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c76d776150fdb1411c97a4b36eff6aa037cf2c19271c1e8784a52dfea5a0c7e7c2b12f4fd616ab76bde04f97c407d1c55ecc13ba57e8f987cad2331a2987bd3
|
7
|
+
data.tar.gz: 8708281c65f24db613e9de7663b705fcd9022a048fe7a306529a4f1e512f470a5d5c34058fe8262d11842dfd3bfa8366a385c0ccd8434cc623aca830f14364ae
|
data/lib/dire/dir.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module Dire
|
2
2
|
class Dir < Node
|
3
|
-
@@invalid_link_handler = -> (nodes, path) {}
|
3
|
+
@@invalid_link_handler = -> (root, nodes, path) {}
|
4
4
|
|
5
5
|
def self.invalid_link_handler= lambda
|
6
6
|
@@invalid_link_handler = lambda
|
7
7
|
end
|
8
8
|
|
9
|
-
@@invalid_path_handler = -> (nodes, path) {}
|
9
|
+
@@invalid_path_handler = -> (root, nodes, path) {}
|
10
10
|
|
11
11
|
def self.invalid_path_handler= lambda
|
12
12
|
@@invalid_path_handler = lambda
|
@@ -38,16 +38,16 @@ module Dire
|
|
38
38
|
return @nodes if @nodes
|
39
39
|
|
40
40
|
@nodes = absolute_path.glob '*', ::File::FNM_DOTMATCH
|
41
|
-
@nodes = @nodes.each_with_object(Array.new) do |
|
42
|
-
next if ignore?
|
41
|
+
@nodes = @nodes.each_with_object(Array.new) do |path, nodes|
|
42
|
+
next if ignore? path
|
43
43
|
|
44
|
-
if absolute_path.to_s <
|
44
|
+
if absolute_path.to_s < path.to_s
|
45
45
|
begin
|
46
|
-
nodes.push get(
|
46
|
+
nodes.push get(path)
|
47
47
|
rescue Dire::Error::InvalidLink
|
48
|
-
@@invalid_link_handler.(nodes,
|
48
|
+
@@invalid_link_handler.(root, nodes, path)
|
49
49
|
rescue Dire::Error::InvalidPath
|
50
|
-
@@invalid_path_handler.(nodes,
|
50
|
+
@@invalid_path_handler.(root, nodes, path)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
data/lib/dire/file.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Dire::Module::Path
|
2
|
+
def absolute_path
|
3
|
+
path
|
4
|
+
end
|
5
|
+
|
6
|
+
def name
|
7
|
+
absolute_path.basename.to_s
|
8
|
+
end
|
9
|
+
|
10
|
+
def param
|
11
|
+
relative_path.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
def relative_path
|
15
|
+
chop path
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def chop pth
|
21
|
+
expand(pth).relative_path_from(root)
|
22
|
+
end
|
23
|
+
|
24
|
+
def expand pth
|
25
|
+
path.join(pth).expand_path
|
26
|
+
end
|
27
|
+
|
28
|
+
def ignore? path
|
29
|
+
Dire::IGNORE.any? do |ignore|
|
30
|
+
File.fnmatch? ignore, path, File::FNM_DOTMATCH | File::FNM_PATHNAME
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def inside? path
|
35
|
+
expand(path).to_s.index(root.to_s) == 0
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Dire::Module::Validity
|
2
|
+
def validate!
|
3
|
+
begin
|
4
|
+
if ignore? path
|
5
|
+
raise Errno::ENOENT if ignore? path
|
6
|
+
end
|
7
|
+
|
8
|
+
path.lstat
|
9
|
+
rescue Errno::ENOENT
|
10
|
+
raise Dire::Error::InvalidPath, 'Not found'
|
11
|
+
end
|
12
|
+
|
13
|
+
unless inside? path
|
14
|
+
raise Dire::Error::InvalidPath, 'Outside root'
|
15
|
+
end
|
16
|
+
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def validate_type! name
|
23
|
+
unless type == name
|
24
|
+
raise Dire::Error::InvalidPath, 'Node missmatch'
|
25
|
+
end
|
26
|
+
|
27
|
+
true
|
28
|
+
end
|
29
|
+
end
|
data/lib/dire/node.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
module Dire
|
2
2
|
class Node
|
3
|
-
include
|
4
|
-
include Mixin::Path
|
3
|
+
include Module::Check, Module::Path, Module::Validity
|
5
4
|
|
6
5
|
attr_reader :path, :root
|
7
6
|
|
8
|
-
def initialize node, root, validate
|
7
|
+
def initialize node, root, validate: true
|
9
8
|
@path = str2abs node
|
10
9
|
@root = plant root
|
11
10
|
|
12
11
|
validate! if validate
|
13
12
|
end
|
14
13
|
|
15
|
-
def get path, validate
|
14
|
+
def get path, validate: true
|
16
15
|
path = expand path
|
17
16
|
type = path.ftype rescue nil
|
18
17
|
|
@@ -24,12 +23,12 @@ module Dire
|
|
24
23
|
else Other
|
25
24
|
end
|
26
25
|
|
27
|
-
const.new path, root, validate
|
26
|
+
const.new path, root, validate: validate
|
28
27
|
end
|
29
28
|
|
30
29
|
def parent
|
31
30
|
Dire::Dir.new absolute_path.join('..'), root
|
32
|
-
rescue Error::InvalidPath
|
31
|
+
rescue Dire::Error::InvalidPath
|
33
32
|
nil
|
34
33
|
end
|
35
34
|
|
data/lib/dire/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Filip Pyda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mimemagic
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: 2.5.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: 2.5.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,8 +71,9 @@ files:
|
|
71
71
|
- lib/dire/error/invalid_root.rb
|
72
72
|
- lib/dire/file.rb
|
73
73
|
- lib/dire/link.rb
|
74
|
-
- lib/dire/
|
75
|
-
- lib/dire/
|
74
|
+
- lib/dire/module/check.rb
|
75
|
+
- lib/dire/module/path.rb
|
76
|
+
- lib/dire/module/validity.rb
|
76
77
|
- lib/dire/node.rb
|
77
78
|
- lib/dire/other.rb
|
78
79
|
- lib/dire/version.rb
|
data/lib/dire/mixin/check.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
module Dire::Mixin::Check
|
2
|
-
def == other
|
3
|
-
path.to_s == other.path.to_s
|
4
|
-
end
|
5
|
-
|
6
|
-
def broken?
|
7
|
-
false
|
8
|
-
end
|
9
|
-
|
10
|
-
def known?
|
11
|
-
true
|
12
|
-
end
|
13
|
-
|
14
|
-
def parent? node
|
15
|
-
parent == node
|
16
|
-
end
|
17
|
-
|
18
|
-
def root?
|
19
|
-
false
|
20
|
-
end
|
21
|
-
|
22
|
-
def validate!
|
23
|
-
begin
|
24
|
-
raise Errno::ENOENT if ignore? path
|
25
|
-
|
26
|
-
path.lstat
|
27
|
-
rescue Errno::ENOENT
|
28
|
-
raise Dire::Error::InvalidPath, 'Not found'
|
29
|
-
end
|
30
|
-
|
31
|
-
unless inside? path
|
32
|
-
raise Dire::Error::InvalidPath, 'Outside root'
|
33
|
-
end
|
34
|
-
|
35
|
-
true
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def ignore? path
|
41
|
-
Dire::IGNORE.any? do |ignore|
|
42
|
-
File.fnmatch? ignore, path, File::FNM_PATHNAME
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def inside? path
|
47
|
-
expand(path).to_s.index(root.to_s) == 0
|
48
|
-
end
|
49
|
-
|
50
|
-
def validate_type! name
|
51
|
-
unless type == name
|
52
|
-
raise Dire::Error::InvalidPath, 'Node missmatch'
|
53
|
-
end
|
54
|
-
|
55
|
-
true
|
56
|
-
end
|
57
|
-
end
|
data/lib/dire/mixin/path.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Dire::Mixin::Path
|
2
|
-
def absolute_path
|
3
|
-
path
|
4
|
-
end
|
5
|
-
|
6
|
-
def param
|
7
|
-
relative_path.to_s
|
8
|
-
end
|
9
|
-
|
10
|
-
def relative_path
|
11
|
-
chop path
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def chop pth
|
17
|
-
expand(pth).relative_path_from(root)
|
18
|
-
end
|
19
|
-
|
20
|
-
def expand pth
|
21
|
-
path.join(pth).expand_path
|
22
|
-
end
|
23
|
-
end
|