zeitwerk 2.7.2 → 2.7.3

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.
@@ -2,21 +2,23 @@
2
2
 
3
3
  module Zeitwerk
4
4
  module Registry # :nodoc: all
5
+ require_relative "registry/autoloads"
5
6
  require_relative "registry/explicit_namespaces"
6
7
  require_relative "registry/inceptions"
8
+ require_relative "registry/loaders"
7
9
 
8
10
  class << self
9
11
  # Keeps track of all loaders. Useful to broadcast messages and to prevent
10
12
  # them from being garbage collected.
11
13
  #
12
14
  # @private
13
- # @sig Array[Zeitwerk::Loader]
15
+ #: Zeitwerk::Registry::Loaders
14
16
  attr_reader :loaders
15
17
 
16
18
  # Registers gem loaders to let `for_gem` be idempotent in case of reload.
17
19
  #
18
20
  # @private
19
- # @sig Hash[String, Zeitwerk::Loader]
21
+ #: Hash[String, Zeitwerk::Loader]
20
22
  attr_reader :gem_loaders_by_root_file
21
23
 
22
24
  # Maps absolute paths to the loaders responsible for them.
@@ -25,61 +27,37 @@ module Zeitwerk
25
27
  # invoke callbacks and autovivify modules.
26
28
  #
27
29
  # @private
28
- # @sig Hash[String, Zeitwerk::Loader]
30
+ #: Zeitwerk::Registry::Autoloads
29
31
  attr_reader :autoloads
30
32
 
31
- # Registers a loader.
32
- #
33
33
  # @private
34
- # @sig (Zeitwerk::Loader) -> void
35
- def register_loader(loader)
36
- loaders << loader
37
- end
34
+ #: Zeitwerk::Registry::ExplicitNamespaces
35
+ attr_reader :explicit_namespaces
36
+
37
+ # @private
38
+ #: Zeitwerk::Registry::Inceptions
39
+ attr_reader :inceptions
38
40
 
39
41
  # @private
40
- # @sig (Zeitwerk::Loader) -> void
42
+ #: (Zeitwerk::Loader) -> void
41
43
  def unregister_loader(loader)
42
- loaders.delete(loader)
43
44
  gem_loaders_by_root_file.delete_if { |_, l| l == loader }
44
- autoloads.delete_if { |_, l| l == loader }
45
45
  end
46
46
 
47
47
  # This method returns always a loader, the same instance for the same root
48
48
  # file. That is how Zeitwerk::Loader.for_gem is idempotent.
49
49
  #
50
50
  # @private
51
- # @sig (String) -> Zeitwerk::Loader
51
+ #: (String, namespace: Module, warn_on_extra_files: boolish) -> Zeitwerk::Loader
52
52
  def loader_for_gem(root_file, namespace:, warn_on_extra_files:)
53
53
  gem_loaders_by_root_file[root_file] ||= GemLoader.__new(root_file, namespace: namespace, warn_on_extra_files: warn_on_extra_files)
54
54
  end
55
-
56
- # @private
57
- # @sig (Zeitwerk::Loader, String) -> String
58
- def register_autoload(loader, abspath)
59
- autoloads[abspath] = loader
60
- end
61
-
62
- # @private
63
- # @sig (String) -> void
64
- def unregister_autoload(abspath)
65
- autoloads.delete(abspath)
66
- end
67
-
68
- # @private
69
- # @sig (String) -> Zeitwerk::Loader?
70
- def loader_for(path)
71
- autoloads[path]
72
- end
73
-
74
- # @private
75
- # @sig (Zeitwerk::Loader) -> void
76
- def on_unload(loader)
77
- autoloads.delete_if { |_path, object| object == loader }
78
- end
79
55
  end
80
56
 
81
- @loaders = []
57
+ @loaders = Loaders.new
82
58
  @gem_loaders_by_root_file = {}
83
- @autoloads = {}
59
+ @autoloads = Autoloads.new
60
+ @explicit_namespaces = ExplicitNamespaces.new
61
+ @inceptions = Inceptions.new
84
62
  end
85
63
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zeitwerk
4
- VERSION = "2.7.2"
4
+ #: String
5
+ VERSION = "2.7.3"
5
6
  end
data/lib/zeitwerk.rb CHANGED
@@ -19,7 +19,7 @@ module Zeitwerk
19
19
  # This is a dangerous method.
20
20
  #
21
21
  # @experimental
22
- # @sig () -> void
22
+ #: () -> void
23
23
  def self.with_loader
24
24
  loader = Zeitwerk::Loader.new
25
25
  yield loader
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeitwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.2
4
+ version: 2.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavier Noria
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: |2
13
13
  Zeitwerk implements constant autoloading with Ruby semantics. Each gem
@@ -39,8 +39,10 @@ files:
39
39
  - lib/zeitwerk/null_inflector.rb
40
40
  - lib/zeitwerk/real_mod_name.rb
41
41
  - lib/zeitwerk/registry.rb
42
+ - lib/zeitwerk/registry/autoloads.rb
42
43
  - lib/zeitwerk/registry/explicit_namespaces.rb
43
44
  - lib/zeitwerk/registry/inceptions.rb
45
+ - lib/zeitwerk/registry/loaders.rb
44
46
  - lib/zeitwerk/version.rb
45
47
  homepage: https://github.com/fxn/zeitwerk
46
48
  licenses:
@@ -64,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
66
  - !ruby/object:Gem::Version
65
67
  version: '0'
66
68
  requirements: []
67
- rubygems_version: 3.6.4
69
+ rubygems_version: 3.6.9
68
70
  specification_version: 4
69
71
  summary: Efficient and thread-safe constant autoloader
70
72
  test_files: []