Class: HTML::Pipeline::LinkifyGitHubFilter
- Inherits:
-
Filter
- Object
- Filter
- HTML::Pipeline::LinkifyGitHubFilter
- 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
#call ⇒ Object
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 |