extended_dir 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/extended_dir.rb +42 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 32beec719893d4c28cbd37f72629f6e8cee7e6303b3bec876c6ed9cafe45ee96
4
+ data.tar.gz: a3b84d2f9f1c5da6c1273693f858a58049eeb86d6b5b810eacd3a6c2c3e72fda
5
+ SHA512:
6
+ metadata.gz: 408d352b65d403c11767af63a315c2a6db2be6105fccfd22321b0f080580c838f2558783e04d8fe027f6ecbef77019f38c269414862d0aa20e493aa0e075e72b
7
+ data.tar.gz: c188af0b85fd6ee251aa46250e337c6468d1dd677a7f943fa4ac35b78329a23e9baadefe6eca3dfac7cb834747791212ea32a162d9823bb1456cef6ff6e6f181
@@ -0,0 +1,42 @@
1
+ module ArrayRefinement
2
+ refine Array do
3
+ def with_ruby_extension
4
+ select { |member| member =~ /\.rb$/ }
5
+ end
6
+
7
+ def sort_by_with_index!
8
+ sort_by! do |member|
9
+ yield member, index(member)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ class ExtendedDir
16
+ using ArrayRefinement
17
+
18
+ def self.entries(path, order: [])
19
+ sort_files(path, order)
20
+ end
21
+
22
+ def self.require_all(path, order: [])
23
+ sort_files(path, order).each { |file| require file }
24
+ end
25
+
26
+ def self.load_all(path, order: [])
27
+ sort_files(path, order).each { |file| load file }
28
+ end
29
+
30
+ private
31
+
32
+ def self.sort_files(path, order)
33
+ files = Dir.glob("#{path}/**/*").with_ruby_extension
34
+ files.sort_by_with_index! do |file, i|
35
+ index = order.find_index do |ordered_file|
36
+ entries = Dir.glob("#{path}/#{ordered_file}")
37
+ entries.include? file
38
+ end
39
+ index || order.length + i
40
+ end
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: extended_dir
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sean Gregory
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-07-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: small utility library for loading files in a priortized sort order
28
+ email: sean.christopher.gregory@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/extended_dir.rb
34
+ homepage: https://rubygems.org/gems/extended_dir
35
+ licenses:
36
+ - MIT
37
+ metadata:
38
+ source_code_uri: https://github.com/skinnyjames/extended_dir
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.2.3
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: small utility library for loading files in a priortized sort order
58
+ test_files: []