Class: SixthSense::Adapters::RSpec::CodeUnitExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/sixth_sense/adapters/rspec.rb

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ CodeUnitExtractor

Returns a new instance of CodeUnitExtractor.



336
337
338
339
# File 'lib/sixth_sense/adapters/rspec.rb', line 336

def initialize(path)
  @path = path
  @ast = Prism.parse_file(path).value
end

Instance Method Details

#code_unitObject



341
342
343
344
345
346
347
348
349
350
351
352
353
354
# File 'lib/sixth_sense/adapters/rspec.rb', line 341

def code_unit
  constants = []
  methods = []
  walk(@ast) do |node|
    constants << constant_name(node) if node.is_a?(Prism::ClassNode) || node.is_a?(Prism::ModuleNode)
    methods << node.name.to_s if node.is_a?(Prism::DefNode)
  end

  Model::CodeUnit.new(
    path: @path,
    constants: constants.compact.uniq,
    methods: methods.compact.uniq
  )
end