diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-03-20 10:11:26 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-03-20 10:14:25 +0100 |
commit | 323d328c8644e3ff01b806f7754d33c0c7dedd7b (patch) | |
tree | 69b6a3d67aabd2437d9970285c15fd4cb70a01c9 /lib | |
parent | 802b28e04ab15f1750f20c188302f172cef6ccf6 (diff) | |
download | gitlab-ce-323d328c8644e3ff01b806f7754d33c0c7dedd7b.tar.gz |
Rename reference unfolder to rewriter, minor refactorings
Diffstat (limited to 'lib')
-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 |