Class: Danger::MessageGroup

Inherits:
Object
  • Object
show all
Defined in:
lib/danger/danger_core/message_group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file: nil, line: nil) ⇒ MessageGroup

Returns a new instance of MessageGroup.



5
6
7
8
# File 'lib/danger/danger_core/message_group.rb', line 5

def initialize(file: nil, line: nil)
  @file = file
  @line = line
end

Instance Attribute Details

#fileObject (readonly)

Returns the value of attribute file.



40
41
42
# File 'lib/danger/danger_core/message_group.rb', line 40

def file
  @file
end

#lineObject (readonly)

Returns the value of attribute line.



40
41
42
# File 'lib/danger/danger_core/message_group.rb', line 40

def line
  @line
end

Instance Method Details

#<<(message) ⇒ Object

Adds a message to the group.

Parameters:



29
30
31
32
# File 'lib/danger/danger_core/message_group.rb', line 29

def <<(message)
  # TODO: insertion sort
  messages << message if same_line?(message)
end

#merge(other) ⇒ Object

Merges two ‘MessageGroup`s that represent the same line of code In future, perhaps `MessageGroup` will be able to represent a group of messages for multiple lines.

Raises:

  • (ArgumentError)


21
22
23
24
25
# File 'lib/danger/danger_core/message_group.rb', line 21

def merge(other)
  raise ArgumentError, "Cannot merge with MessageGroup for a different line" unless same_line?(other)

  @messages = (messages + other.messages).uniq
end

#messagesObject

The list of messages in this group. This list will be sorted in decreasing order of severity (error, warning, message, markdown)



36
37
38
# File 'lib/danger/danger_core/message_group.rb', line 36

def messages
  @messages ||= []
end

#same_line?(other) ⇒ Boolean

Returns whether this ‘MessageGroup` is for the same line of code as

`other`, taking which file they are in to .

Parameters:

Returns:

  • (Boolean)

    whether this ‘MessageGroup` is for the same line of code



14
15
16
# File 'lib/danger/danger_core/message_group.rb', line 14

def same_line?(other)
  other.file == file && other.line == line
end