Class: DiverDown::Web::DefinitionModuleDependencies
- Inherits:
-
Object
- Object
- DiverDown::Web::DefinitionModuleDependencies
- Defined in:
- lib/diver_down/web/definition_module_dependencies.rb
Defined Under Namespace
Classes: ModuleDependency
Instance Method Summary collapse
- #build_module_dependency_map ⇒ Hash{ String => Hash{ String => Array<DiverDown::Definition::Source> } }
-
#initialize(metadata, definition) ⇒ DefinitionModuleDependencies
constructor
A new instance of DefinitionModuleDependencies.
Constructor Details
#initialize(metadata, definition) ⇒ DefinitionModuleDependencies
Returns a new instance of DefinitionModuleDependencies.
29 30 31 32 |
# File 'lib/diver_down/web/definition_module_dependencies.rb', line 29 def initialize(, definition) @metadata = @definition = definition end |
Instance Method Details
#build_module_dependency_map ⇒ Hash{ String => Hash{ String => Array<DiverDown::Definition::Source> } }
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/diver_down/web/definition_module_dependencies.rb', line 35 def build_module_dependency_map module_dependency_map = Hash.new { |h, k| h[k] = ModuleDependency.new(k) } @definition.sources.each do |source| source_module = @metadata.source(source.source_name).module next if source_module.nil? source_module_dependency = module_dependency_map[source_module] source_module_dependency.source_map[source.source_name] ||= DiverDown::Definition::Source.new(source_name: source.source_name) source.dependencies.each do |dependency| dependency_module = @metadata.source(dependency.source_name).module next if source_module == dependency_module next if dependency_module.nil? dependency_module_dependency = module_dependency_map[dependency_module] # Add module dependencies source_module_dependency.module_dependencies.add(dependency_module) # Add module reverse dependencies dependency_module_dependency.module_reverse_dependencies.add(source_module) # Add source definition_source = source_module_dependency.source_map[source.source_name] definition_dependency = definition_source.find_or_build_dependency(dependency.source_name) dependency.method_ids.each do |method_id| definition_dependency.find_or_build_method_id(name: method_id.name, context: method_id.context).add_path(*method_id.paths) end # Add source reverse dependencies # NOTE: Reverse dependencies's method_ids are not added because they are difficult to understand and not used. definition_source = dependency_module_dependency.source_reverse_dependency_map[source.source_name] ||= DiverDown::Definition::Source.new(source_name: source.source_name) definition_source.find_or_build_dependency(dependency.source_name) end end module_dependency_map end |