module RepositoryMerger::GitHubIssueReference

Constants

ABSOLUTE_REFERENCE_PATTERN
AbsoluteReference
ISSUE_NUMBER_PATTERN
REFERENCE_PATTERN
REPOSITORY_NAME_PATTERN
REPO_LOCAL_REFERENCE_PATTERN

docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/autolinked-references-and-urls#issues-and-pull-requests

RepositoryLocalReference
USERNAME_PATTERN

github.com/isiahmeadows/github-limits

Public Class Methods

convert_repo_local_references_to_absolute_ones_in(message, username:, repo_name:) click to toggle source
# File lib/repository_merger/github_issue_reference.rb, line 29
def self.convert_repo_local_references_to_absolute_ones_in(message, username:, repo_name:)
  message.gsub(REPO_LOCAL_REFERENCE_PATTERN) do
    reference = create_referece_from(Regexp.last_match)
    raise unless reference
    "#{username}/#{repo_name}##{reference.issue_number}"
  end
end
create_referece_from(match) click to toggle source
# File lib/repository_merger/github_issue_reference.rb, line 37
def self.create_referece_from(match)
  if match[:repo_local_reference]
    RepositoryLocalReference.new(issue_number: Integer(match[:issue_number]))
  elsif match[:absolute_reference]
    AbsoluteReference.new(
      username: match[:username],
      repo_name: match[:repo_name],
      issue_number: Integer(match[:issue_number])
    )
  end
end
extract_references_from(message) click to toggle source
# File lib/repository_merger/github_issue_reference.rb, line 18
def self.extract_references_from(message)
  references = []

  message.scan(REFERENCE_PATTERN) do
    reference = create_referece_from(Regexp.last_match)
    references << reference if reference
  end

  references
end