class RubyDetective::SourceRepresentation::Entities::Klass

Attributes

data_store[R]
file_path[R]
inheritance_class_name[R]
lines_of_code[R]
name[R]
namespace[R]

Public Class Methods

new(name, namespace, inheritance_class_name: nil, file_path:, first_line:, last_line:) click to toggle source
# File lib/ruby_detective/source_representation/entities/klass.rb, line 7
def initialize(name, namespace, inheritance_class_name: nil, file_path:, first_line:, last_line:)
  @name = name
  @namespace = namespace
  @file_path = file_path
  @inheritance_class_name = inheritance_class_name
  @lines_of_code = last_line - first_line + 1
  @data_store = SourceRepresentation::DataStore.instance
end

Public Instance Methods

constants() click to toggle source
# File lib/ruby_detective/source_representation/entities/klass.rb, line 16
def constants
  data_store
  .query
  .constants(where: { caller: self })
end
dependencies() click to toggle source
# File lib/ruby_detective/source_representation/entities/klass.rb, line 22
def dependencies
  constants
  .map(&:refers_to)
  .compact
  .reject{ |c| c.name == name } # Removes circular dependencies
end
dependents() click to toggle source
# File lib/ruby_detective/source_representation/entities/klass.rb, line 29
def dependents
  data_store.query
  .constants(where: { refers_to: self })
  .map(&:caller)
  .compact
  .reject{ |c| c.name == name } # Removes circular dependencies
end
merge(duplicate) click to toggle source
# File lib/ruby_detective/source_representation/entities/klass.rb, line 37
def merge(duplicate)
  @inheritance_class_name ||= duplicate.inheritance_class_name
  @lines_of_code += duplicate.lines_of_code
end