joenas/preek

View on GitHub
lib/preek/smell_file.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Preek
  # A smelly file
  class SmellFile

    def initialize(examiner)
      @examiner = examiner
      @klasses = {}
      add_smells_to_klasses
    end

    def file
      @examiner.description
    end

    alias :filename :file

    def klasses
      return @klasses unless block_given?
      @klasses.each do |name, klass|
        yield klass
      end
    end

  private
    def add_smells_to_klasses
      @examiner.smells.each do |smell|
        find(smell.klass) << smell
      end
    end

    def find(klassname)
      @klasses[klassname.to_sym] ||= SmellKlass.new(klassname)
    end
  end
end