Class: Dependabot::PullRequestCreator::MessageBuilder::IssueLinker
- Inherits:
-
Object
- Object
- Dependabot::PullRequestCreator::MessageBuilder::IssueLinker
- Defined in:
- lib/dependabot/pull_request_creator/message_builder/issue_linker.rb
Constant Summary collapse
- REPO_REGEX =
%r{(?<repo>[\w.-]+/(?:(?!\.git|\.\s)[\w.-])+)}
- TAG_REGEX =
/(?<tag>(?:\#|GH-)\d+)/i
- ISSUE_LINK_REGEXS =
[ / (?:(?<=[^A-Za-z0-9\[\\]|^)\\*#{TAG_REGEX}(?=[^A-Za-z0-9\-]|$))| (?:(?<=\s|^)#{REPO_REGEX}#{TAG_REGEX}(?=[^A-Za-z0-9\-]|$)) /x, /\[#{TAG_REGEX}\](?=[^A-Za-z0-9\-\(])/, /\[(?<tag>(?:\#|GH-)?\d+)\]\(\)/i ].freeze
Instance Attribute Summary collapse
-
#source_url ⇒ Object
readonly
Returns the value of attribute source_url.
Instance Method Summary collapse
-
#initialize(source_url:) ⇒ IssueLinker
constructor
A new instance of IssueLinker.
- #link_issues(text:) ⇒ Object
Constructor Details
#initialize(source_url:) ⇒ IssueLinker
Returns a new instance of IssueLinker.
23 24 25 |
# File 'lib/dependabot/pull_request_creator/message_builder/issue_linker.rb', line 23 def initialize(source_url:) @source_url = source_url end |
Instance Attribute Details
#source_url ⇒ Object (readonly)
Returns the value of attribute source_url.
21 22 23 |
# File 'lib/dependabot/pull_request_creator/message_builder/issue_linker.rb', line 21 def source_url @source_url end |
Instance Method Details
#link_issues(text:) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/dependabot/pull_request_creator/message_builder/issue_linker.rb', line 27 def link_issues(text:) # Loop through each of the issue link regexes, replacing any instances # of them with an absolute link that uses the source URL ISSUE_LINK_REGEXS.reduce(text) do |updated_text, regex| updated_text.gsub(regex) do |issue_link| tag = issue_link .match(/(?<tag>(?:\#|GH-)?\d+)/i) .named_captures.fetch("tag") number = tag.match(/\d+/).to_s repo = issue_link .match("#{REPO_REGEX}#{TAG_REGEX}") &.named_captures &.fetch("repo", nil) source = repo ? "https://github.com/#{repo}" : source_url "[#{repo ? (repo + tag) : tag}](#{source}/issues/#{number})" end end end |