class Archruby::Ruby::TypeInference::DependencyOrganizer

Attributes

dependencies[R]
method_definitions[R]

Public Class Methods

new() click to toggle source
# File lib/archruby/ruby/type_inference/dependency_organizer.rb, line 8
def initialize
  @dependencies = {}
  @method_definitions = {}
end

Public Instance Methods

add_dependencies(found_dependencies) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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