require_smasher 0.3.1 → 0.3.2

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: 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