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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e8b3d765df8a8e795518d4064f14aac2cd6251b
4
- data.tar.gz: d0cf2f954efb5d39c9d5acc51a324f8c6ffe7203
3
+ metadata.gz: 75a8147ed24cb8f74fb3eda35ead4c80ebb640ee
4
+ data.tar.gz: 48eb06fdab9982b14efc09f5f35213e7f6552f24
5
5
  SHA512:
6
- metadata.gz: 66e819ffaf4fee4017fa6df1c5249c7f1a958c6d2f40c6acbd75e042bd97338c0b63d906e7fc9581bafffdb8625d7d8a1e9419ce25a6c8df4cd935e51f3a137b
7
- data.tar.gz: 0f5f54fc7024931dad13084ba58e1e75ddd309e1d911c726ba8a196349167c9a4388ca9a76ac2e12a9331b0698eebbf71f95bef8f9e24bad4eb5786d71bb8326
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 still concerned about the selected paths number, you can limit it before applying the slicing (if any):
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: 7500)
103
+ worker = FileScanner::Worker.new(loader: loader, slice: 1000, limit: 6000)
104
104
  worker.call do |slice|
105
- # perform action 1000 paths per time till reaching the specified limit
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: 7500, logger: my_logger)
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
- # perform action 1000 paths per time till reaching the specified limit
141
+ # filters applied on a maximum of 6000 paths, working a slice of 1000 files per time
142
142
  end
143
143
  ```
@@ -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
@@ -1,3 +1,3 @@
1
1
  module FileScanner
2
- VERSION = "2.1.1"
2
+ VERSION = "2.2.1"
3
3
  end
@@ -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, limit: limit, logger: logger)
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, limit: -1, logger: Logger.new(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 files
39
- paths = @loader.call
40
- paths.select! { |file| filter(file) } || paths
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 [limit] if @slice.zero?
62
- limit.each_slice(@slice)
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.1.1
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-16 00:00:00.000000000 Z
11
+ date: 2017-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler