Sha256: c3da86f1fd7b90623ac0c20b5f3a9c3600cc4b3564155329c7912c0e0734084c

Contents?: true

Size: 1.53 KB

Versions: 12

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true

module DeepCover
  require_relative 'base'
  require_relative 'index'
  require_relative 'source'

  module Reporter::HTML
    class Site < Reporter::Base
      include Memoize
      memoize :analysis

      def path
        Pathname(options[:output])
      end

      def save
        clear
        save_assets
        save_index
        save_pages
      end

      def clear
        path.mkpath
        path.rmtree
        path.mkpath
      end

      def compile_stylesheet(source, dest)
        css = Sass::Engine.for_file(source, style: :expanded).to_css
        File.write(dest, css)
      end

      def render_index
        Tools.render_template(:index, Index.new(self))
      end

      def save_index
        path.join('index.html').write(render_index)
      end

      def save_assets
        require 'fileutils'
        src = "#{__dir__}/template/assets"
        dest = path.join('assets')
        FileUtils.cp_r(src, dest)
        dest.join('deep_cover.css.sass').delete
      end

      def render_source(partial_path, covered_code)
        Tools.render_template(:source, Source.new(analysis.analyser_map.fetch(covered_code), partial_path))
      end

      def save_pages
        each do |partial_path, covered_code|
          dest = path.join("#{partial_path}.html")
          dest.dirname.mkpath
          dest.write(render_source(partial_path, covered_code))
        end
      end

      def self.save(coverage, output:, **options)
        Site.new(coverage, output: output, **options).save
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
deep-cover-core-0.7.8 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.7 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.6 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.5 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.4 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.3 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.2 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.1 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.7.0 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.6.4 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.6.3 lib/deep_cover/reporter/html/site.rb
deep-cover-core-0.6.3.pre lib/deep_cover/reporter/html/site.rb