file_scanner 2.1.1 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/lib/file_scanner/loader.rb +5 -2
- data/lib/file_scanner/version.rb +1 -1
- data/lib/file_scanner/worker.rb +8 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75a8147ed24cb8f74fb3eda35ead4c80ebb640ee
|
4
|
+
data.tar.gz: 48eb06fdab9982b14efc09f5f35213e7f6552f24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f5d534a0122b1a124abfb65b554bdf185d08f43cf699964b1176c3e14e8942a44e88908acea04bcbbebe7167ebbb3163ab6640a4d3739c8006655752ec9c31c
|
7
|
+
data.tar.gz: 75717028a39150d905fe3dd53abe0c6e8ab242b78f5020eea88c7bbf72a9cc5c3654cb563f4e301412b10c28dc0aab1f3445240bea5216b85390bf6960273173
|
data/README.md
CHANGED
@@ -98,11 +98,11 @@ end
|
|
98
98
|
```
|
99
99
|
|
100
100
|
#### Limit
|
101
|
-
In case you are
|
101
|
+
In case you are going to apply some heavy filtering upon the selected files (i.e. reading the file in memory to get some creepy data), you can found helpful to limit the number of retuned paths before applying any filtering:
|
102
102
|
```ruby
|
103
|
-
worker = FileScanner::Worker.new(loader: loader, slice: 1000, limit:
|
103
|
+
worker = FileScanner::Worker.new(loader: loader, slice: 1000, limit: 6000)
|
104
104
|
worker.call do |slice|
|
105
|
-
#
|
105
|
+
# filters applied on a maximum of 6000 paths, working a slice of 1000 files per time
|
106
106
|
end
|
107
107
|
```
|
108
108
|
|
@@ -136,8 +136,8 @@ end
|
|
136
136
|
#### Factory
|
137
137
|
You can create loader and worker instances at once by using the available factory:
|
138
138
|
```ruby
|
139
|
-
worker = FileScanner::Worker.factory(path: ENV["HOME"], extensions: %w[html txt], filters: filters, all: true, slice: 1000, limit:
|
139
|
+
worker = FileScanner::Worker.factory(path: ENV["HOME"], extensions: %w[html txt], filters: filters, all: true, slice: 1000, limit: 6000, logger: my_logger)
|
140
140
|
worker.call do |slice, logger|
|
141
|
-
#
|
141
|
+
# filters applied on a maximum of 6000 paths, working a slice of 1000 files per time
|
142
142
|
end
|
143
143
|
```
|
data/lib/file_scanner/loader.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
module FileScanner
|
2
2
|
class Loader
|
3
|
-
def initialize(path:, extensions: [])
|
3
|
+
def initialize(path:, extensions: [], limit: -1)
|
4
4
|
@path = File.expand_path(path)
|
5
5
|
@extensions = extensions
|
6
|
+
@limit = limit.to_i
|
6
7
|
end
|
7
8
|
|
8
9
|
def call
|
9
|
-
Dir.glob(files_path)
|
10
|
+
paths = Dir.glob(files_path)
|
11
|
+
return paths if @limit <= 0
|
12
|
+
paths.sample(@limit)
|
10
13
|
end
|
11
14
|
|
12
15
|
private def files_path
|
data/lib/file_scanner/version.rb
CHANGED
data/lib/file_scanner/worker.rb
CHANGED
@@ -5,18 +5,17 @@ require "file_scanner/loader"
|
|
5
5
|
module FileScanner
|
6
6
|
class Worker
|
7
7
|
def self.factory(path:, extensions: [], filters: [], all: false, slice: nil, limit: -1, logger: Logger.new(nil))
|
8
|
-
loader = Loader.new(path: path, extensions: extensions)
|
9
|
-
new(loader: loader, filters: filters, slice: slice, all: all,
|
8
|
+
loader = Loader.new(path: path, extensions: extensions, limit: limit)
|
9
|
+
new(loader: loader, filters: filters, slice: slice, all: all, logger: logger)
|
10
10
|
end
|
11
11
|
|
12
12
|
attr_reader :loader, :filters
|
13
13
|
|
14
|
-
def initialize(loader:, filters: Filters::defaults, all: false, slice: nil,
|
14
|
+
def initialize(loader:, filters: Filters::defaults, all: false, slice: nil, logger: Logger.new(nil))
|
15
15
|
@loader = loader
|
16
16
|
@filters = filters
|
17
17
|
@all = !!all
|
18
18
|
@slice = slice.to_i
|
19
|
-
@limit = limit.to_i
|
20
19
|
@logger = logger
|
21
20
|
end
|
22
21
|
|
@@ -35,14 +34,9 @@ module FileScanner
|
|
35
34
|
mode
|
36
35
|
end
|
37
36
|
|
38
|
-
private def
|
39
|
-
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
private def limit
|
44
|
-
return files if @limit <= 0
|
45
|
-
files.first(@limit)
|
37
|
+
private def filtered
|
38
|
+
files = @loader.call
|
39
|
+
files.select! { |file| filter(file) } || files
|
46
40
|
end
|
47
41
|
|
48
42
|
private def mode
|
@@ -58,8 +52,8 @@ module FileScanner
|
|
58
52
|
end
|
59
53
|
|
60
54
|
private def slices
|
61
|
-
return [
|
62
|
-
|
55
|
+
return [filtered] if @slice.zero?
|
56
|
+
filtered.each_slice(@slice)
|
63
57
|
end
|
64
58
|
end
|
65
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_scanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- costajob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|