Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-03-29 14:21:57 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-03-30 11:44:18 +0300
commitf2674c7b98c69668093583e4590223b7040b5b33 (patch)
tree5a967b8893ab4e73b3d0adea001e364848e65489 /lib/gitlab/gfm
parent0b8cefd3b2385a21cfed779bd659978c0402766d (diff)
Refactor uploads rewriter used when moving issue
Diffstat (limited to 'lib/gitlab/gfm')
-rw-r--r--lib/gitlab/gfm/reference_rewriter.rb9
-rw-r--r--lib/gitlab/gfm/uploads_rewriter.rb21
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