Sha256: 2dc8193c17978885fa80ce48f99e2e4c85ab685d0281e90a40adfb2e40545e33

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

class CodeStats::Report
  attr_reader :filters, :projects
  def initialize *args
    @filters = args.extract_options!
    @projects = args
  end

  def render
    # preparing data
    data = projects.clone
    data.sort!{|a, b| b.characters_count(filters) <=> a.characters_count(filters)}
    data.collect! do |p|
      o = OpenObject.new
      o.name = p.name

      o.characters_count = p.characters_count(filters)
      o.characters_count_by_language = p.characters_count_by_language(filters)
      o.ignored_characters_count_by_language = p.characters_count_by_language.reject do |lang, count|
        o.characters_count_by_language.include?(lang)
      end

      o.specs = OpenObject.new
      o.specs.characters_count = p.specs.characters_count(filters)
      o.specs.characters_count_by_language = p.specs.characters_count_by_language(filters)
      o.specs.ignored_characters_count_by_language = p.specs.characters_count_by_language.reject do |lang, count|
        o.specs.characters_count_by_language.include?(lang)
      end

      o.unknown_extensions = p.unknown_extensions

      o
    end

    # rendering
    dir = __FILE__.dirname.to_dir
    css = [dir['report/style.css'].read].join("\n")
    js = %w(jquery.js highchart.js report.js).collect{|n| dir["report/#{n}"].read}.join("\n")

    report = dir / 'report.html.haml'
    report.render(projects: data, filters: filters, css: css, js: js)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
code_stats2-0.1.8 lib/code_stats/report.rb
code_stats2-0.1.7 lib/code_stats/report.rb
code_stats2-0.1.6 lib/code_stats/report.rb
code_stats2-0.1.5 lib/code_stats/report.rb