extended_dir 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []