diff options
author | Paco Guzman <pacoguzmanp@gmail.com> | 2016-06-16 10:13:43 +0200 |
---|---|---|
committer | Paco Guzman <pacoguzmanp@gmail.com> | 2016-06-16 10:13:43 +0200 |
commit | 3170dbdcaafbe96f4377a6018e77ae92184d0fbd (patch) | |
tree | 54ce89129bd16d3e3c10b8f51eac153720c0d96a | |
parent | a3c95b39326c2b1a4e4a506072a81beff30d372c (diff) | |
download | gitlab-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.rb | 67 |
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) |