diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-03-29 14:21:57 +0300 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-03-30 11:44:18 +0300 |
commit | f2674c7b98c69668093583e4590223b7040b5b33 (patch) | |
tree | 5a967b8893ab4e73b3d0adea001e364848e65489 /lib/gitlab/gfm | |
parent | 0b8cefd3b2385a21cfed779bd659978c0402766d (diff) |
Refactor uploads rewriter used when moving issue
Diffstat (limited to 'lib/gitlab/gfm')
-rw-r--r-- | lib/gitlab/gfm/reference_rewriter.rb | 9 | ||||
-rw-r--r-- | lib/gitlab/gfm/uploads_rewriter.rb | 21 |
2 files changed, 17 insertions, 13 deletions
diff --git a/lib/gitlab/gfm/reference_rewriter.rb b/lib/gitlab/gfm/reference_rewriter.rb index a1c6ee7bd69..5f906d07177 100644 --- a/lib/gitlab/gfm/reference_rewriter.rb +++ b/lib/gitlab/gfm/reference_rewriter.rb @@ -34,16 +34,19 @@ module Gitlab @source_project = source_project @current_user = current_user @original_html = markdown(text) + @pattern = Gitlab::ReferenceExtractor.references_pattern end def rewrite(target_project) - pattern = Gitlab::ReferenceExtractor.references_pattern - - @text.gsub(pattern) do |reference| + @text.gsub(@pattern) do |reference| unfold_reference(reference, Regexp.last_match, target_project) end end + def needs_rewrite? + !(@text =~ @pattern).nil? + end + private def unfold_reference(reference, match, target_project) diff --git a/lib/gitlab/gfm/uploads_rewriter.rb b/lib/gitlab/gfm/uploads_rewriter.rb index 778b6fe9f9d..5818766c974 100644 --- a/lib/gitlab/gfm/uploads_rewriter.rb +++ b/lib/gitlab/gfm/uploads_rewriter.rb @@ -3,8 +3,9 @@ module Gitlab ## # Class that rewrites markdown links for uploads # - # Using a pattern defined in `FileUploader` copies files to a new project - # and rewrites all links to uploads in ain a given text. + # Using a pattern defined in `FileUploader` it copies files to a new + # project and rewrites all links to uploads in in a given text. + # # class UploadsRewriter def initialize(text, source_project, _current_user) @@ -17,17 +18,17 @@ module Gitlab return unless @text new_uploader = file_uploader(target_project) - @text.gsub(@pattern) do |markdown_link| - old_file = find_file(@source_project, $~[:secret], $~[:file]) - return markdown_link unless old_file.exists? + @text.gsub(@pattern) do |markdown| + file = find_file(@source_project, $~[:secret], $~[:file]) + return markdown unless file.try(:exists?) - new_uploader.store!(old_file) + new_uploader.store!(file) new_uploader.to_h[:markdown] end end - def has_uploads? - !(@text =~ @pattern).nil? + def needs_rewrite? + files.any? end def files @@ -46,8 +47,8 @@ module Gitlab uploader.file end - def file_uploader(*args) - uploader = FileUploader.new(*args) + def file_uploader(project, secret = nil) + uploader = FileUploader.new(project, secret) uploader.define_singleton_method(:move_to_store) { false } uploader end |