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-20 12:11:26 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-03-20 12:14:25 +0300
commit323d328c8644e3ff01b806f7754d33c0c7dedd7b (patch)
tree69b6a3d67aabd2437d9970285c15fd4cb70a01c9 /lib/gitlab/gfm
parent802b28e04ab15f1750f20c188302f172cef6ccf6 (diff)
Rename reference unfolder to rewriter, minor refactorings
Diffstat (limited to 'lib/gitlab/gfm')
-rw-r--r--lib/gitlab/gfm/reference_rewriter.rb (renamed from lib/gitlab/gfm/reference_unfolder.rb)32
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/gitlab/gfm/reference_unfolder.rb b/lib/gitlab/gfm/reference_rewriter.rb
index 94c09761960..91069732d44 100644
--- a/lib/gitlab/gfm/reference_unfolder.rb
+++ b/lib/gitlab/gfm/reference_rewriter.rb
@@ -28,32 +28,31 @@ module Gitlab
# 'Merge request for issue gitlab-org/gitlab-ce#1234, se also link:
# http://gitlab.com/some/link/#1234, and code `puts #1234`'
#
- class ReferenceUnfolder
- def initialize(text, project, user)
+ class ReferenceRewriter
+ def initialize(text, source_project, current_user)
@text = text
- @project = project
- @user = user
- @original = markdown(text)
+ @source_project = source_project
+ @current_user = current_user
+ @original_html = markdown(text)
end
- def unfold(from_project)
+ def rewrite(target_project)
pattern = Gitlab::ReferenceExtractor.references_pattern
- return @text unless @text =~ pattern
@text.gsub(pattern) do |reference|
- unfold_reference(reference, Regexp.last_match, from_project)
+ unfold_reference(reference, Regexp.last_match, target_project)
end
end
private
- def unfold_reference(reference, match, from_project)
+ def unfold_reference(reference, match, target_project)
before = @text[0...match.begin(0)]
- after = @text[match.end(0)...@text.length]
- referable = find_referable(reference)
+ after = @text[match.end(0)..-1]
+ referable = find_local_referable(reference)
return reference unless referable
- cross_reference = referable.to_reference(from_project)
+ cross_reference = referable.to_reference(target_project)
new_text = before + cross_reference + after
substitution_valid?(new_text) ? cross_reference : reference
@@ -62,21 +61,22 @@ module Gitlab
def referables
return @referables if @referables
- extractor = Gitlab::ReferenceExtractor.new(@project, @user)
+ extractor = Gitlab::ReferenceExtractor.new(@source_project,
+ @current_user)
extractor.analyze(@text)
@referables = extractor.all
end
- def find_referable(reference)
+ def find_local_referable(reference)
referables.find { |ref| ref.to_reference == reference }
end
def substitution_valid?(substituted)
- @original == markdown(substituted)
+ @original_html == markdown(substituted)
end
def markdown(text)
- Banzai.render(text, project: @project, no_original_data: true)
+ Banzai.render(text, project: @source_project, no_original_data: true)
end
end
end