Sha256: a64532d13800d6405eebdd7a6c1acdcc9d4c0873877483ffb04afc12d72d064b

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

module MetricFu
  
  def self.generate_heckle_report
    Heckle.generate_report
    system("open #{Heckle.metric_dir}/index.html") if open_in_browser?    
  end
    
  class Heckle < Base::Generator

    def analyze
      files_to_heckle = MetricFu.heckle[:dirs_to_heckle].map{|dir| Dir[File.join(dir, "**/*.rb")] }
      class_names = files_to_heckle.flatten.collect do |f|
        buffer = open(f).readlines.join("\n")
        outline = buffer.scan(/class\s+([\w|:]*)+?/)
        klass = path_to_classname(f).split('::').last
      end      
      class_names.flatten!
      output = ''
      ObjectSpace.each_object(Class) do |klass|
        class_names.each do |name|
          if klass.name =~ /::#{name}$/
            res = `heckle #{name} -t spec/**/#{name}_spec.rb`
            output << res
          end
        end
      end
      @matches = output.chomp.split("\n\n").map{|m| m.split("\n") }
    end

    def path_to_classname(s)
      f = s.sub(/^lib/, '').sub(/\.rb$/, '').split('/')
      f = f.map { |path| path.split(/_/).map { |seg| seg.capitalize }.join }
      f.join('::')
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
p8-metric_fu-0.9.0.6 lib/metric_fu/heckle.rb