Sha256: 33269e4eef83ab0ddd3a156dc4138ba21a7d3ed2cb928123378994feb2d5af06

Contents?: true

Size: 1.25 KB

Versions: 46

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require "danger/danger_core/messages/base"

module Danger
  class Violation < BaseMessage
    VALID_TYPES = %I[error warning message].freeze
    attr_accessor :sticky

    def initialize(message, sticky, file = nil, line = nil, type: :warning)
      raise ArgumentError unless VALID_TYPES.include?(type)

      super(type: type, message: message, file: file, line: line)
      self.sticky = sticky
    end

    def ==(other)
      return false if other.nil?
      return false unless other.kind_of? self.class

      other.message == message &&
        other.sticky == sticky &&
        other.file == file &&
        other.line == line
    end

    def hash
      h = 1
      h = h * 31 + message.hash
      h = h * 13 + sticky.hash
      h = h * 17 + file.hash
      h * 17 + line.hash
    end

    def <=>(other)
      types = VALID_TYPES + [:markdown]
      order = types.index(type) <=> types.index(other.type)
      return order unless order.zero?

      compare_by_file_and_line(other)
    end

    def to_s
      extra = []
      extra << "sticky: #{sticky}"
      extra << "file: #{file}" if file
      extra << "line: #{line}" if line
      extra << "type: #{type}"

      "Violation #{message} { #{extra.join ', '} }"
    end
  end
end

Version data entries

46 entries across 46 versions & 2 rubygems

Version Path
danger-9.5.1 lib/danger/danger_core/messages/violation.rb
danger-9.5.0 lib/danger/danger_core/messages/violation.rb
danger-9.4.3 lib/danger/danger_core/messages/violation.rb
danger-9.4.2 lib/danger/danger_core/messages/violation.rb
danger-9.4.1 lib/danger/danger_core/messages/violation.rb
danger-9.4.0 lib/danger/danger_core/messages/violation.rb
danger-9.3.2 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.36 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.35 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.34 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.33 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.32 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.31 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.30 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.29 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.28 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.27 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.26 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.25 lib/danger/danger_core/messages/violation.rb
danger-additional-logging-0.0.24 lib/danger/danger_core/messages/violation.rb