Class: DiverDown::Web::SourceAliasResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/diver_down/web/source_alias_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(metadata_alias) ⇒ SourceAliasResolver

Returns a new instance of SourceAliasResolver.

Parameters:



7
8
9
# File 'lib/diver_down/web/source_alias_resolver.rb', line 7

def initialize()
  @metadata_alias = 
end

Instance Method Details

#resolve(definition) ⇒ DiverDown::Definition

Parameters:

Returns:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/diver_down/web/source_alias_resolver.rb', line 13

def resolve(definition)
  new_definition = DiverDown::Definition.new(
    definition_group: definition.definition_group,
    title: definition.title
  )

  definition.sources.each do |source|
    resolved_source_name = @metadata_alias.resolve_alias(source.source_name) || source.source_name
    new_source = new_definition.find_or_build_source(resolved_source_name)

    source.dependencies.each do |dependency|
      resolved_dependency_source_name = @metadata_alias.resolve_alias(dependency.source_name) || dependency.source_name
      new_dependency = new_source.find_or_build_dependency(resolved_dependency_source_name)

      next unless new_dependency

      dependency.method_ids.each do |method_id|
        new_method_id = new_dependency.find_or_build_method_id(
          context: method_id.context,
          name: method_id.name
        )

        method_id.paths.each do |path|
          new_method_id.add_path(path)
        end
      end
    end
  end

  new_definition
end