Sha256: 4b502f5df4eaa48dc0920d212ac64568f40acbd5ae64b83af6d932a522ceb9c9

Contents?: true

Size: 1.26 KB

Versions: 26

Compression:

Stored size: 1.26 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 = h * 17 + line.hash
      h
    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

26 entries across 26 versions & 1 rubygems

Version Path
danger-9.1.0 lib/danger/danger_core/messages/violation.rb
danger-9.0.0 lib/danger/danger_core/messages/violation.rb
danger-8.6.1 lib/danger/danger_core/messages/violation.rb
danger-8.6.0 lib/danger/danger_core/messages/violation.rb
danger-8.5.0 lib/danger/danger_core/messages/violation.rb
danger-8.4.5 lib/danger/danger_core/messages/violation.rb
danger-8.4.4 lib/danger/danger_core/messages/violation.rb
danger-8.4.3 lib/danger/danger_core/messages/violation.rb
danger-8.4.2 lib/danger/danger_core/messages/violation.rb
danger-8.4.1 lib/danger/danger_core/messages/violation.rb
danger-8.4.0 lib/danger/danger_core/messages/violation.rb
danger-8.3.1 lib/danger/danger_core/messages/violation.rb
danger-8.2.3 lib/danger/danger_core/messages/violation.rb
danger-8.2.2 lib/danger/danger_core/messages/violation.rb
danger-8.2.1 lib/danger/danger_core/messages/violation.rb
danger-8.2.0 lib/danger/danger_core/messages/violation.rb
danger-8.1.0 lib/danger/danger_core/messages/violation.rb
danger-8.0.6 lib/danger/danger_core/messages/violation.rb
danger-8.0.5 lib/danger/danger_core/messages/violation.rb
danger-8.0.4 lib/danger/danger_core/messages/violation.rb