Sha256: 54bc09a1c2f348fa74a99fcdba399edcd37517260462aaa88967d1d88ab67788

Contents?: true

Size: 1.24 KB

Versions: 25

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module Nanoc::CLI
  # @api private
  class StackTraceWriter
    def initialize(stream, forwards:)
      @stream = stream
      @forwards = forwards
    end

    def write(error, verbose:)
      if @forwards
        write_forwards(error, verbose: verbose)
      else
        write_backwards(error, verbose: verbose)
      end
    end

    private

    def write_backwards(error, verbose:)
      count = verbose ? -1 : 10

      error.backtrace[0...count].each_with_index do |item, index|
        @stream.puts "  #{index}. #{item}"
      end

      if !verbose && error.backtrace.size > count
        @stream.puts "  ... #{error.backtrace.size - count} lines omitted (see crash.log for details)"
      end
    end

    def write_forwards(error, verbose:)
      count = 10
      backtrace = verbose ? error.backtrace : error.backtrace.take(count)

      if !verbose && error.backtrace.size > count
        @stream.puts "  ... #{error.backtrace.size - count} lines omitted (see crash.log for details)"
      end

      backtrace.each_with_index.to_a.reverse_each do |(item, index)|
        if index.zero?
          @stream.puts "  #{item}"
        else
          @stream.puts "  #{index}. from #{item}"
        end
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
nanoc-4.11.12 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.11 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.10 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.9 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.8 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.7 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.6 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.5 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.4 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.3 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.2 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.1 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.11.0 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.10.4 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.10.3 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.10.2 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.10.1 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.10.0 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.9.9 lib/nanoc/cli/stack_trace_writer.rb
nanoc-4.9.8 lib/nanoc/cli/stack_trace_writer.rb