class ABCing::Scanner

Public Class Methods

new(params) click to toggle source
# File lib/abcing/scanner.rb, line 3
def initialize(params)
  @app_directories = params.fetch(:app_directories)
  @test_directories = params.fetch(:test_directories)
end

Public Instance Methods

results() click to toggle source
# File lib/abcing/scanner.rb, line 8
def results
  test_classes = []

  app_class_names.each do |a|
    @test_directories.each do |t|
      entries = test_class_names(a)
      test_classes << entries unless entries.empty?
    end
  end

  { test_letter_matches: first_letters(test_classes.flatten.uniq),
    app_letter_matches: first_letters(app_class_names) }
end

Private Instance Methods

app_class_names() click to toggle source
# File lib/abcing/scanner.rb, line 28
def app_class_names
  class_names contents(files @app_directories)
end
class_names(file_contents) click to toggle source
# File lib/abcing/scanner.rb, line 44
def class_names(file_contents)
  ABCing::ClassNameFinder.new(file_contents).find
end
contents(files) click to toggle source
# File lib/abcing/scanner.rb, line 32
def contents(files)
  files.collect { |f| File.read(f) }
end
files(directories) click to toggle source
# File lib/abcing/scanner.rb, line 40
def files(directories)
  ABCing::ClassFileFinder.new(directories).find
end
first_letters(class_names) click to toggle source
# File lib/abcing/scanner.rb, line 48
def first_letters(class_names)
  ABCing::AlphabetMatch.new(class_names).letters
end
test_class_names(app_class_name) click to toggle source
# File lib/abcing/scanner.rb, line 24
def test_class_names(app_class_name)
  contents(test_files).collect { |e| e.scan(/^.*(#{app_class_name}).*$/) }.flatten
end
test_files() click to toggle source
# File lib/abcing/scanner.rb, line 36
def test_files
  @test_directories.collect { |dir| Dir["#{dir}/**/*.rb"] }.flatten
end