Sha256: a51a858999fa35b23ab6a8cedcefff05a2f1c46759c40765ee25aca035f4b500

Contents?: true

Size: 1.27 KB

Versions: 5

Compression:

Stored size: 1.27 KB

Contents

module WarningSigns
  module MessageFormatter
    class Base
      include CallerHelper
      attr_reader :backtrace_lines, :behaviors, :environments, :filter_backtraces

      def self.for(**args)
        args = args.symbolize_keys
        type = args.delete(:format) || "text"
        class_name = "WarningSigns::MessageFormatter::#{type.classify}"
        class_name.constantize.new(**args)
      end

      def initialize(backtrace_lines: 0, behaviors: {}, environments: {}, filter_backtraces: "yes")
        @backtrace_lines = backtrace_lines
        @behaviors = OnlyExcept.new(**behaviors.symbolize_keys)
        @environments = OnlyExcept.new(**environments.symbolize_keys)
        @filter_backtraces = filter_backtraces.to_s.downcase.inquiry
      end

      def format_message(message, backtrace)
        raise NotImplementedError
      end

      def filtered_backtrace(backtrace)
        return [] if backtrace.nil?
        result = backtrace.reject do |location|
          ignore_line(location.to_s, filter_backtraces: filter_backtraces)
        end
        result.empty? ? backtrace : result
      end

      def filtered_backtrace_lines(backtrace)
        return [] if backtrace_lines.zero?
        filtered_backtrace(backtrace)[1..backtrace_lines] || []
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
warning_signs-0.7.2 lib/warning_signs/message_formatter/base.rb
warning_signs-0.7.1 lib/warning_signs/message_formatter/base.rb
warning_signs-0.7.0 lib/warning_signs/message_formatter/base.rb
warning_signs-0.6.1 lib/warning_signs/message_formatter/base.rb
warning_signs-0.6.0 lib/warning_signs/message_formatter/base.rb