automatic_namespaces 0.2.0 → 0.3.0

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
  SHA256:
3
- metadata.gz: 472b930f3c812dd6a1cb69710bd15741625eda0632f54f3c124c1a38ac325b1f
4
- data.tar.gz: c6cd88175022d998eb01bf7ef3194ce79d1f7ce030dee46478c1465503866738
3
+ metadata.gz: b98197aef26bbea5b268b32ade2377e646d65eb5ced3e1d89c0c15930d0cede3
4
+ data.tar.gz: 0bf0c76a057ebf5a9e9dec1e7e4ef6583efdef60f84325aaa4cc8a683d073a18
5
5
  SHA512:
6
- metadata.gz: f16bfe436cfcd0fdaa4e11a9cb145815c940bfd60533ffc7f4b74f0da8c246a344727ee5b1495b4070ef7dd676c9ba19cb972cc450346391fb6f0cec37985d23
7
- data.tar.gz: 3d71f3d2938bb795796bc21bae3e6b02009728d325a167685afadeeb3e091236373c21ae65e176311357d0bbfdecba799d1946db14f557284358a10eb586f231
6
+ metadata.gz: 59f1594f6822e1f3d6eac4f2571423edd2ff079a13ec0748b39f63e55d720b8bf63a4139151778e6863a1e82e1848740b72687dd2a127b2cdab898b0b766a3fd
7
+ data.tar.gz: b38559506c30a6e40f72751692a2540bde040faea2dbee8c5c063d7dadbda14c5db963e35d4b99b3936eba93f4446ac95a58c3e3a79e69c4389099bf6ad7d3ac
@@ -21,7 +21,7 @@ class AutomaticNamespaces::Autoloader
21
21
  end
22
22
 
23
23
  def pack_directories(pack_root_dir)
24
- Dir.glob("#{pack_root_dir}/app/*").reject { |dir| non_namspaced_directory(dir) }
24
+ Dir.glob("#{pack_root_dir}/**/app/*").reject { |dir| non_namspaced_directory(dir) }
25
25
  end
26
26
 
27
27
  def non_namspaced_directory(dir)
@@ -33,9 +33,18 @@ class AutomaticNamespaces::Autoloader
33
33
  end
34
34
 
35
35
  def define_namespace(pack, metadata)
36
- namespace = metadata['namespace_override'] || pack.last_name.camelize
37
- Object.const_set(namespace, Module.new)
38
- namespace.constantize
36
+ namespace_name = metadata['namespace_override'] || pack.last_name.camelize
37
+ namespace_object = Object
38
+ namespace_name.split('::').each do |module_name|
39
+ namespace_object = find_or_create_module(namespace_object, module_name)
40
+ end
41
+ namespace_object
42
+ end
43
+
44
+ def find_or_create_module(namespace_object, module_name)
45
+ namespace_object.const_defined?(module_name) ?
46
+ namespace_object.const_get(module_name) :
47
+ namespace_object.const_set(module_name, Module.new)
39
48
  end
40
49
 
41
50
  def namespaced_packages
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AutomaticNamespaces
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: automatic_namespaces
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary Passero
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-29 00:00:00.000000000 Z
11
+ date: 2023-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description:
97
+ description:
98
98
  email:
99
99
  - gpassero@gmail.com
100
100
  executables: []
@@ -114,7 +114,7 @@ metadata:
114
114
  source_code_uri: https://github.com/gap777/automatic_namespaces
115
115
  changelog_uri: https://github.com/gap777/automatic_namespaces/releases
116
116
  allowed_push_host: https://rubygems.org
117
- post_install_message:
117
+ post_install_message:
118
118
  rdoc_options: []
119
119
  require_paths:
120
120
  - lib
@@ -129,8 +129,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  requirements: []
132
- rubygems_version: 3.1.6
133
- signing_key:
132
+ rubygems_version: 3.2.15
133
+ signing_key:
134
134
  specification_version: 4
135
135
  summary: Modify autoloading to assume all files within a directory belong in a namespace
136
136
  test_files: []