Class: Archruby::Ruby::TypeInference::DependencyOrganizer
- Inherits:
-
Object
- Object
- Archruby::Ruby::TypeInference::DependencyOrganizer
- Defined in:
- lib/archruby/ruby/type_inference/dependency_organizer.rb
Instance Attribute Summary collapse
-
#dependencies ⇒ Object
readonly
Returns the value of attribute dependencies.
-
#method_definitions ⇒ Object
readonly
Returns the value of attribute method_definitions.
Instance Method Summary collapse
- #add_dependencies(found_dependencies) ⇒ Object
- #add_method_calls(found_calls) ⇒ Object
-
#initialize ⇒ DependencyOrganizer
constructor
A new instance of DependencyOrganizer.
- #unused_internal_method_call?(internal_method_call) ⇒ Boolean
- #unused_method_definition?(method_definition) ⇒ Boolean
Constructor Details
#initialize ⇒ DependencyOrganizer
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
#dependencies ⇒ Object (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_definitions ⇒ Object (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
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
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 |