Sha256: c2c22320dcc10e06d0880ac12f97f814cce761478f77a9edd713e5bc6b9da201

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require 'json'

module Engines
  module JestJsonSummary
    class Extractor
      METRICS = %i[].freeze

      def initialize; end

      def call(provider)
        metrics = METRICS.map do |metric|
          [metric, send(metric)]
        end.to_h

        metrics
          .merge!(total_lines)
          .merge!(total_statements)
          .merge!(total_functions)
          .merge!(total_branches)

        provider.emit(metrics)
      end

      def requirements?
        File.exist?('jest_json_summary.output.json')
      end

      private

      def json_summary
        @json_summary ||= JSON.parse(File.read('jest_json_summary.output.json'))
      end

      def total_lines
        flatten('lines')
      end

      def total_statements
        flatten('statements')
      end

      def total_functions
        flatten('functions')
      end

      def total_branches
        flatten('branches')
      end

      def flatten(member, rename = nil)
        json_summary['total'][member].map do |key, value|
          ["jest_json_summary_#{rename || member}_#{key}", value.to_f]
        end.to_h
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
codemonitor-0.6.6 engines/jest-json-summary/extractor.rb
codemonitor-0.6.5 engines/jest-json-summary/extractor.rb
codemonitor-0.6.4 engines/jest-json-summary/extractor.rb
codemonitor-0.6.3 engines/jest-json-summary/extractor.rb
codemonitor-0.6.2 engines/jest-json-summary/extractor.rb