Class: Worklog::Github::PullRequestEvent

Inherits:
Object
  • Object
show all
Defined in:
lib/github/pull_request_event.rb

Overview

An event representing a pull request

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ PullRequestEvent

Returns a new instance of PullRequestEvent.



29
30
31
32
33
# File 'lib/github/pull_request_event.rb', line 29

def initialize(params = {})
  params.each do |key, value|
    send("#{key}=", value) if respond_to?("#{key}=")
  end
end

Instance Attribute Details

#closed_atTime?

Returns the time the pull request was closed, or nil if not closed.

Returns:

  • (Time, nil)

    the time the pull request was closed, or nil if not closed



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#created_atTime

Returns the creation time of the pull request.

Returns:

  • (Time)

    the creation time of the pull request



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#descriptionString

Returns the description of the pull request.

Returns:

  • (String)

    the description of the pull request



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#merged_atTime?

Returns the time the pull request was merged, or nil if not merged.

Returns:

  • (Time, nil)

    the time the pull request was merged, or nil if not merged



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#numberInteger

Returns the pull request number.

Returns:

  • (Integer)

    the pull request number



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#repositoryString

Returns the repository name.

Returns:

  • (String)

    the repository name



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#titleString

Returns the title of the pull request.

Returns:

  • (String)

    the title of the pull request



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

#urlString

Returns the URL of the pull request.

Returns:

  • (String)

    the URL of the pull request



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/github/pull_request_event.rb', line 26

class PullRequestEvent
  attr_accessor :repository, :number, :url, :title, :description, :created_at, :merged_at, :closed_at

  def initialize(params = {})
    params.each do |key, value|
      send("#{key}=", value) if respond_to?("#{key}=")
    end
  end

  # Returns true if the pull request was merged.
  # Usually, a merged pull request is also closed.
  # @return [Boolean] true if merged, false otherwise
  def merged?
    !merged_at.nil?
  end

  # Returns true if the pull request was closed.
  # A closed pull request may or may not be merged.
  # @return [Boolean] true if closed, false otherwise
  # @see #merged?
  def closed?
    # Treat merged pull requests as closed
    !closed_at.nil? || (merged? && closed_at.nil?)
  end

  # Convert the PullRequestEvent to a LogEntry
  # @return [LogEntry]
  def to_log_entry(*)
    message = if merged?
                'Merged PR '
              elsif closed?
                'Closed PR '
              else
                'Created PR '
              end
    message += title

    # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
    time = if merged?
             merged_at
           elsif closed?
             closed_at
           else
             created_at
           end
    key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
    LogEntry.new(
      key:,
      source: 'github',
      time:,
      message:,
      url: url,
      epic: false,
      ticket: nil
    )
  end

  # String representation of the PullRequestEvent
  # @return [String]
  def to_s
    short_url = url.length > 10 ? "...#{url[-10..]}" : url
    unless description.nil?
      short_description = description.gsub(/\n+/, ' ')
      short_description = "#{short_description[0..16]}..." if short_description.length > 20
    end
    "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
      "description=#{short_description} " \
      "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
  end
end

Instance Method Details

#closed?Boolean

Returns true if the pull request was closed. A closed pull request may or may not be merged.

Returns:

  • (Boolean)

    true if closed, false otherwise

See Also:



46
47
48
49
# File 'lib/github/pull_request_event.rb', line 46

def closed?
  # Treat merged pull requests as closed
  !closed_at.nil? || (merged? && closed_at.nil?)
end

#merged?Boolean

Returns true if the pull request was merged. Usually, a merged pull request is also closed.

Returns:

  • (Boolean)

    true if merged, false otherwise



38
39
40
# File 'lib/github/pull_request_event.rb', line 38

def merged?
  !merged_at.nil?
end

#to_log_entryLogEntry

Convert the PullRequestEvent to a LogEntry

Returns:

  • (LogEntry)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/github/pull_request_event.rb', line 53

def to_log_entry(*)
  message = if merged?
              'Merged PR '
            elsif closed?
              'Closed PR '
            else
              'Created PR '
            end
  message += title

  # If merged, use merged_at time; if closed, use closed_at time; otherwise, use created_at time
  time = if merged?
           merged_at
         elsif closed?
           closed_at
         else
           created_at
         end
  key = Hasher.sha256("#{repository}#{number}#{merged?}#{closed?}")
  LogEntry.new(
    key:,
    source: 'github',
    time:,
    message:,
    url: url,
    epic: false,
    ticket: nil
  )
end

#to_sString

String representation of the PullRequestEvent

Returns:

  • (String)


85
86
87
88
89
90
91
92
93
94
# File 'lib/github/pull_request_event.rb', line 85

def to_s
  short_url = url.length > 10 ? "...#{url[-10..]}" : url
  unless description.nil?
    short_description = description.gsub(/\n+/, ' ')
    short_description = "#{short_description[0..16]}..." if short_description.length > 20
  end
  "#<PullRequestEvent repository=#{repository} number=#{number} url=#{short_url} title=#{title} " \
    "description=#{short_description} " \
    "created_at=#{created_at} merged_at=#{merged_at} closed_at=#{closed_at}>"
end