Class: Archruby::Ruby::TypeInference::DependencyOrganizer

Inherits:
Object
  • Object
show all
Defined in:
lib/archruby/ruby/type_inference/dependency_organizer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDependencyOrganizer

Returns a new instance of DependencyOrganizer.



8
9
10
11
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 8

def initialize
  @dependencies = {}
  @method_definitions = {}
end

Instance Attribute Details

#dependenciesObject (readonly)

Returns the value of attribute dependencies.



6
7
8
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 6

def dependencies
  @dependencies
end

#method_definitionsObject (readonly)

Returns the value of attribute method_definitions.



6
7
8
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 6

def method_definitions
  @method_definitions
end

Instance Method Details

#add_dependencies(found_dependencies) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 13

def add_dependencies(found_dependencies)
  found_dependencies.each do |class_dependency|
    class_name = class_dependency.name
    @dependencies[class_name] ||= Set.new
    @dependencies[class_name].merge(class_dependency.dependencies)
  end
end

#add_method_calls(found_calls) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 21

def add_method_calls(found_calls)
  found_calls.each do |method_definition|
    next if unused_method_definition?(method_definition)
    method_name = method_definition.method_name
    class_name = method_definition.class_name
    args = method_definition.args
    internal_method_calls = []
    method_definition.method_calls.each do |internal_method_call|
      next if unused_internal_method_call?(internal_method_call)
      internal_method_calls << internal_method_call
    end
    if !internal_method_calls.empty?
      method_def = Ruby::MethodDefinition.new(class_name, method_name, args, internal_method_calls)
      @method_definitions[class_name] ||= []
      @method_definitions[class_name] << method_def
    end
  end
end

#unused_internal_method_call?(internal_method_call) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
48
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 44

def unused_internal_method_call?(internal_method_call)
  internal_method_call.params.nil?            ||
  internal_method_call.params.empty?          ||
  internal_method_call.class_name.to_s.empty?
end

#unused_method_definition?(method_definition) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/archruby/ruby/type_inference/dependency_organizer.rb', line 40

def unused_method_definition?(method_definition)
  method_definition.method_calls.empty? || method_definition.class_name.to_s.empty?
end