Class: HTML::Pipeline::LinkifyGitHubFilter

Inherits:
Filter
  • Object
show all
Defined in:
lib/html/pipeline/linkify_github.rb

Overview

Filter that converts GitHub’s url into friendly markdown.

For example:

<a href="https://github.com/rails/rails/pull/21862">https://github.com/rails/rails/pull/21862</a>
<a href="https://github.com/rails/rails/issues/21843">https://github.com/rails/rails/issues/21843</a>
<a href="https://github.com/rails/rails/commit/67597e1719ec6af7e22964603cc77aa5b085a864">https://github.com/rails/rails/commit/67597e1719ec6af7e22964603cc77aa5b085a864</a>

=>

<a href="https://github.com/rails/rails/pull/21862">rails/rails#21862</a>
<a href="https://github.com/rails/rails/issues/21843">rails/rails#21843</a>
<a href="https://github.com/rails/rails/commit/67597e1719ec6af7e22964603cc77aa5b085a864">rails/rails@`67597e`</a>

This filter does not write any additional information to the context hash.

Constant Summary collapse

PULL_REQUEST_REGEXP =
%r{https?://(www.)?github.com/(?<owner>.+)/(?<repo>.+)/pull/(?<number>\d+)/?}.freeze
ISSUES_REGEXP =
%r{https?://(www.)?github.com/(?<owner>.+)/(?<repo>.+)/issues/(?<number>\d+)/?}.freeze
COMMIT_REGEXP =
%r{https?://(www.)?github.com/(?<owner>.+)/(?<repo>.+)/commit/(?<number>\w+)/?}.freeze

Instance Method Summary collapse

Instance Method Details

#callObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/html/pipeline/linkify_github.rb', line 25

def call
  doc.search("a").each do |element|
    next if element.blank? || element.comment?
    next if element["href"].to_s.empty?

    text = element.inner_html

    element.inner_html = if is_a_pull_request_link? text
      replace_pull_request_link(text)
    elsif is_a_issue_link? text
      replace_issue_link(text)
    elsif is_a_commit_link? text
      replace_commit_link(text)
    else
      text
    end
  end

  doc
end