require_smasher 0.3.1 → 0.3.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bccdebf2570530ade656c1205c57049d534a0a91
4
- data.tar.gz: 4483d1d621beb9a742a78742f5af781a77152c2c
3
+ metadata.gz: 03a374a7aa18c6270297dc2c3dc06311f614d9c6
4
+ data.tar.gz: 23025566b07d29be47c1c6855f766d0c13331a53
5
5
  SHA512:
6
- metadata.gz: b1175691f6ebbae115dac3db8c35d76a85a0a4288f80a9573fe80d287a9bc9f45f8a3aff10953d0426d6d5ad19b050cdf979d98825dadfee23b1335c9a37af29
7
- data.tar.gz: f1dbb21f149d992512267d9d0e060ee9b46d6d74d819cdbce645589c9aa90158d288775f71659f4ab7c23f3e8761dc5b39d0df392a6c9017f81f1935309b9a1f
6
+ metadata.gz: 05b667cc4d63c1c1af21ba7d5c62340a84480675abf926cdd0a0d79addcd5b5bcc002ee5dc7408c7de36e7b83dd15cf817fff510f7866bc08a7cbe583d19ae04
7
+ data.tar.gz: e45106516ff3d5bb9b2540028c385292a6ca545fe0e3699fafbbf763800888be403c65b33d4aa88b1cac617f741f77fe0d0f5fb18e6765567e98af375c63d6ae
data/.travis.yml CHANGED
@@ -2,8 +2,13 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.3.1
5
+ - 2.3.7
6
+ - 2.4.0
7
+ - 2.4.4
8
+ - 2.5.1
5
9
  before_install:
6
10
  - gem install bundler -v 1.16.3
7
11
  - bundle install
8
12
  install:
9
13
  - bundle exec rspec
14
+ - bundle exec rubocop
@@ -0,0 +1,27 @@
1
+ # Classify elements in files or gems
2
+
3
+ module Classifier
4
+ class << self
5
+ def classify(elements)
6
+ files = []
7
+ gems = []
8
+
9
+ elements.uniq.each do |element|
10
+ case element_type(element)
11
+ when :file then files << element
12
+ when :directory then files.concat(FileSmasher.files_by(element))
13
+ else gems << element
14
+ end
15
+ end
16
+ { files: files, gems: gems }
17
+ end
18
+
19
+ private
20
+
21
+ def element_type(element)
22
+ return :directory if Dir.exist?(element)
23
+ return :file if FileSmasher.file?(element)
24
+ :gem
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ # Find files
2
+
3
+ module FileSmasher
4
+ class << self
5
+ def files_by(directory)
6
+ raise StandardError, "Directory '#{directory}' does not exist" unless Dir.exist?(directory)
7
+ Dir.glob("./#{directory}/**/*.rb")
8
+ end
9
+
10
+ def files(directories)
11
+ raise StandardError, 'Directory was not informed' if directories.empty?
12
+
13
+ files = []
14
+ directories.uniq.each do |directory|
15
+ files.concat(FileSmasher.files_by(directory))
16
+ end
17
+
18
+ files
19
+ end
20
+
21
+ def file?(element)
22
+ file = File.expand_path("./#{element}")
23
+ return true if File.file?(file)
24
+ return false if element.include?('.')
25
+ File.file?("#{file}.rb")
26
+ end
27
+ end
28
+ end
@@ -1,45 +1,38 @@
1
- module RequireFile
2
- def self.require_files(files, attempt = 0)
3
- raise StandardError, 'File was not informed' if files.empty?
4
- errors_list = req_files(files)
5
-
6
- return if errors_list[:files_with_error].empty?
7
- attempt += 1 if files == errors_list[:files_with_error]
1
+ # Handle requiring files
8
2
 
9
- raise StandardError, errors_list[:errors] if attempt > 1
10
- require_files(errors_list[:files_with_error], attempt)
11
- end
3
+ module RequireFile
4
+ class << self
5
+ def require(files)
6
+ raise StandardError, 'File was not informed' if files.empty?
7
+ errors_list = require_files(files)
8
+ files_with_error = errors_list[:files_with_error]
12
9
 
13
- def self.require_directories(directories)
14
- raise StandardError, 'Directory was not informed' if directories.empty?
15
- require_files(files(directories))
16
- end
10
+ return if files_with_error.empty?
17
11
 
18
- def self.files(directories)
19
- raise StandardError, 'Directory was not informed' if directories.empty?
12
+ raise StandardError, errors_list[:errors] if files == files_with_error
13
+ require(files_with_error)
14
+ end
20
15
 
21
- files = []
22
- directories.uniq.each do |directory|
23
- raise StandardError, "Directory '#{directory}' does not exist" unless Dir.exist?(directory)
24
- files.concat(Dir.glob(File.join("./#{directory}", '**', '*.rb')))
16
+ def require_directories(directories)
17
+ raise StandardError, 'Directory was not informed' if directories.empty?
18
+ require(FileSmasher.files(directories))
25
19
  end
26
- files
27
- end
28
20
 
29
- def self.req_files(files)
30
- errors_list = { files_with_error: [], errors: [] }
21
+ private
22
+
23
+ def require_files(files)
24
+ errors_list = { files_with_error: [], errors: [] }
31
25
 
32
- files.uniq.each do |file|
33
- begin
34
- require_relative File.expand_path("./#{file}")
35
- rescue LoadError, StandardError => error
36
- errors_list[:files_with_error] << file
37
- errors_list[:errors] << "Error while requiring file #{file}: #{error.message}"
26
+ files.uniq.each do |file|
27
+ begin
28
+ require_relative File.expand_path("./#{file}")
29
+ rescue LoadError, StandardError => error
30
+ errors_list[:files_with_error] << file
31
+ errors_list[:errors] << "Error while requiring file #{file}: #{error.message}"
32
+ end
38
33
  end
39
- end
40
34
 
41
- errors_list
35
+ errors_list
36
+ end
42
37
  end
43
-
44
- private_class_method :req_files
45
38
  end
@@ -1,3 +1,3 @@
1
1
  module RequireSmasher
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.3.2'.freeze
3
3
  end
@@ -1,35 +1,40 @@
1
1
  require 'require_smasher/version'
2
- require 'require_smasher/require_gem'
2
+ require 'require_smasher/file_smasher'
3
+ require 'require_smasher/classifier'
3
4
  require 'require_smasher/require_file'
4
- require 'require_smasher/require_all'
5
5
 
6
6
  def require_all(*required_list)
7
- RequireAll.req(required_list)
7
+ classified = Classifier.classify(required_list)
8
+ gems = classified[:gems]
9
+ files = classified[:files]
10
+
11
+ gems.uniq.each { |gem| require gem } unless gems.empty?
12
+ RequireFile.require(files) unless files.empty?
8
13
  end
9
14
 
10
- def require_gem(gems)
11
- return RequireGem.req([gems]) if gems.instance_of?(String)
12
- RequireGem.req(gems)
15
+ def require_gem(gem)
16
+ require gem
17
+ gem
13
18
  end
14
19
 
15
- def require_dir(directories)
16
- return RequireFile.require_directories([directories]) if directories.instance_of?(String)
17
- RequireFile.require_directories(directories)
20
+ def require_dir(directory)
21
+ RequireFile.require_directories([directory])
18
22
  end
19
23
 
20
- def require_file(files)
21
- return RequireFile.require_files([files]) if files.instance_of?(String)
22
- RequireFile.require_files(files)
24
+ def require_file(file)
25
+ require_relative File.expand_path("./#{file}")
26
+ nil
23
27
  end
24
28
 
25
29
  def require_dirs(*directories)
26
- require_dir(directories)
30
+ RequireFile.require_directories(directories)
27
31
  end
28
32
 
29
33
  def require_gems(*gems)
30
- require_gem(gems)
34
+ raise StandardError, 'Gem was not informed' if gems.empty?
35
+ gems.uniq.each { |gem| require gem }
31
36
  end
32
37
 
33
38
  def require_files(*files)
34
- require_file(files)
39
+ RequireFile.require(files)
35
40
  end
@@ -36,4 +36,5 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency "simplecov", "~> 0.16"
37
37
  spec.add_development_dependency "rubocop", "~> 0.58"
38
38
  spec.add_development_dependency "byebug", "~> 10.0"
39
+ spec.add_development_dependency "rubycritic", "~> 3.4"
39
40
  end
data/todos.txt CHANGED
@@ -1,4 +1,3 @@
1
1
  tratar errors especificos com classe de erros a criar
2
2
  fazer readme em portugues
3
- resolver ofensores restantes do rubocop
4
3
  atualizar readme para informar sobre gemas e arquitetura utilizada para desenvolvimento
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: require_smasher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joacir Junior
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-26 00:00:00.000000000 Z
11
+ date: 2018-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '10.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubycritic
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.4'
97
111
  description: Require Smasher give you the power to require ruby files in a list of
98
112
  directories and their sub-directories (recursively), a list of ruby files and a
99
113
  list of gems, with just one command.
@@ -115,9 +129,9 @@ files:
115
129
  - bin/console
116
130
  - bin/setup
117
131
  - lib/require_smasher.rb
118
- - lib/require_smasher/require_all.rb
132
+ - lib/require_smasher/classifier.rb
133
+ - lib/require_smasher/file_smasher.rb
119
134
  - lib/require_smasher/require_file.rb
120
- - lib/require_smasher/require_gem.rb
121
135
  - lib/require_smasher/version.rb
122
136
  - require_smasher.gemspec
123
137
  - todos.txt
@@ -142,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
156
  version: '0'
143
157
  requirements: []
144
158
  rubyforge_project:
145
- rubygems_version: 2.6.13
159
+ rubygems_version: 2.6.11
146
160
  signing_key:
147
161
  specification_version: 4
148
162
  summary: A simple way to require ruby files in directories and in its sub-directories,
@@ -1,32 +0,0 @@
1
- module RequireAll
2
- def self.req(required_list)
3
- result = required_list_classified(required_list)
4
-
5
- RequireGem.req(result[:gems]) unless result[:gems].empty?
6
- RequireFile.require_files(result[:files]) unless result[:files].empty?
7
- end
8
-
9
- def self.required_list_classified(elements)
10
- result = { files: [], gems: [] }
11
-
12
- elements.uniq.each do |element|
13
- is_file = file?(element)
14
- is_directory = Dir.exist?(element)
15
- is_gem = !(is_file || is_directory)
16
-
17
- result[:files] << element if is_file
18
- result[:files].concat(RequireFile.files([element])) if is_directory
19
- result[:gems] << element if is_gem
20
- end
21
- result
22
- end
23
-
24
- def self.file?(element)
25
- file = File.expand_path("./#{element}")
26
- return true if File.file?(file)
27
- return false if element.include?('.')
28
- File.file?("#{file}.rb")
29
- end
30
-
31
- private_class_method :required_list_classified, :file?
32
- end
@@ -1,6 +0,0 @@
1
- module RequireGem
2
- def self.req(gems)
3
- raise StandardError, 'Gem was not informed' if gems.empty?
4
- gems.uniq.each { |gem| require gem }
5
- end
6
- end