Class: LowLoad::Loader
- Inherits:
-
Object
show all
- Defined in:
- lib/loader.rb
Defined Under Namespace
Classes: MissingDependencyError
Class Method Summary
collapse
Class Method Details
.add_autoloads(file_proxy:) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/loader.rb', line 8
def add_autoloads(file_proxy:)
autoloads = []
file_proxy.dependencies.each do |namespace_with_dependency|
*namespace, dependency = namespace_with_dependency.split('::')
definition_proxies = find_definition_proxies(namespace:, dependency:)
current_namespace = Object
namespace.each do |module_name|
current_namespace.const_set(module_name, Module.new) unless current_namespace.const_defined?(module_name)
current_namespace = current_namespace.const_get(module_name)
end
definition_proxies.each do |definition_proxy|
autoloads << { origin: file_proxy.file_path, current_namespace:, dependency:, file_path: definition_proxy.file_path }
current_namespace.autoload(dependency.to_sym, definition_proxy.file_path)
end
end
autoloads
end
|
.find_definition_proxies(namespace:, dependency:) ⇒ Object
31
32
33
34
35
36
37
38
39
|
# File 'lib/loader.rb', line 31
def find_definition_proxies(namespace:, dependency:)
return Lowkey[dependency] || raise(MissingDependencyError) if namespace.empty?
namespace_with_dependency = [namespace, dependency].join('::')
return Lowkey[namespace_with_dependency] if Lowkey[namespace_with_dependency]
namespace.pop
find_definition_proxies(namespace:, dependency:)
end
|