summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaco Guzman <pacoguzmanp@gmail.com>2016-06-16 10:13:43 +0200
committerPaco Guzman <pacoguzmanp@gmail.com>2016-06-16 10:13:43 +0200
commit3170dbdcaafbe96f4377a6018e77ae92184d0fbd (patch)
tree54ce89129bd16d3e3c10b8f51eac153720c0d96a
parenta3c95b39326c2b1a4e4a506072a81beff30d372c (diff)
downloadgitlab-ce-18591-banzai-filter-upload-link-filter.tar.gz
Banzai::Filter::UploadLinkFilter use XPath18591-banzai-filter-upload-link-filter
-rw-r--r--lib/banzai/filter/upload_link_filter.rb67
1 files changed, 4 insertions, 63 deletions
diff --git a/lib/banzai/filter/upload_link_filter.rb b/lib/banzai/filter/upload_link_filter.rb
index eb54adbc22f..45bb66dc99f 100644
--- a/lib/banzai/filter/upload_link_filter.rb
+++ b/lib/banzai/filter/upload_link_filter.rb
@@ -7,65 +7,15 @@ module Banzai
# :project (required) - Current project
#
class UploadLinkFilter < HTML::Pipeline::Filter
- def call(mode: :xpath)
- if mode == :ruby
- call_ruby
- elsif mode == :xpath
- call_xpath
- elsif mode == :css
- call_css
- else
- call_once_xpath
- end
- end
-
- def call_ruby
- return doc unless project
-
- doc.search('a').each do |el|
- process_link_attr el.attribute('href')
- end
-
- doc.search('img').each do |el|
- process_link_attr el.attribute('src')
- end
-
- doc
- end
-
- def call_xpath
+ def call
return doc unless project
doc.xpath('descendant-or-self::a[starts-with(@href, "/uploads/")]').each do |el|
- process_link_attr_xpath el.attribute('href')
+ process_link_attr el.attribute('href')
end
doc.xpath('descendant-or-self::img[starts-with(@src, "/uploads/")]').each do |el|
- process_link_attr_xpath el.attribute('src')
- end
-
- doc
- end
-
- def call_once_xpath
- return doc unless project
-
- doc.xpath('descendant-or-self::a[starts-with(@href, "/uploads/")]', 'descendant-or-self::img[starts-with(@src, "/uploads/")]').each do |el|
- process_link_attr_xpath el.attribute('href') || el.attribute('src')
- end
-
- doc
- end
-
- def call_css
- return doc unless project
-
- doc.css('a[href^="/uploads/"]').each do |el|
- process_link_attr_xpath el.attribute('href')
- end
-
- doc.css('img[src^="/uploads/"]').each do |el|
- process_link_attr_xpath el.attribute('src')
+ process_link_attr el.attribute('src')
end
doc
@@ -73,17 +23,8 @@ module Banzai
protected
- def process_link_attr_xpath(html_attr)
- html_attr.value = build_url(html_attr.value).to_s
- end
-
def process_link_attr(html_attr)
- return if html_attr.blank?
-
- uri = html_attr.value
- if uri.starts_with?("/uploads/")
- html_attr.value = build_url(uri).to_s
- end
+ html_attr.value = build_url(html_attr.value).to_s
end
def build_url(uri)