Sha256: b92ef13ce6df58f6422b283fa5110671dfc612db9eb43e40f77de6d2be44b4b5

Contents?: true

Size: 972 Bytes

Versions: 4

Compression:

Stored size: 972 Bytes

Contents

module Cycromatic
  class JSONFormatter
    attr_reader :io

    def initialize(io:)
      @io = io
      @results = {}
    end

    def started(path:)
      @path_results = []
      @results[path.to_s] = { results: @path_results }
    end

    def finished(path:)
      @path_results = nil
    end

    def completed
      @io.puts @results.to_json
    end

    def error(path:, exception:)
      @results[path.to_s] = {
        error: {
          message: exception.to_s,
          trace: exception.backtrace
        }
      }
    end

    def calculated(path:, complexity:)
      loc = complexity.node.loc
      name = case complexity.type
             when :toplevel
               "[toplevel]"
             when :method
               complexity.node.children.find {|c| c.is_a? Symbol }.to_s
             end

      @path_results << {
        method: name,
        line: [loc.first_line, loc.last_line],
        complexity: complexity.value
      }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cycromatic-0.1.3 lib/cycromatic/json_formatter.rb
cycromatic-0.1.2 lib/cycromatic/json_formatter.rb
cycromatic-0.1.1 lib/cycromatic/json_formatter.rb
cycromatic-0.1.0 lib/cycromatic/json_formatter.rb