From 323d328c8644e3ff01b806f7754d33c0c7dedd7b Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Sun, 20 Mar 2016 10:11:26 +0100 Subject: [PATCH] Rename reference unfolder to rewriter, minor refactorings --- app/services/issues/move_service.rb | 4 +-- ...ence_unfolder.rb => reference_rewriter.rb} | 32 +++++++++---------- ...der_spec.rb => reference_rewriter_spec.rb} | 6 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) rename lib/gitlab/gfm/{reference_unfolder.rb => reference_rewriter.rb} (69%) rename spec/lib/gitlab/gfm/{reference_unfolder_spec.rb => reference_rewriter_spec.rb} (94%) diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb index 892acc8c04d..c5b2bf80e0b 100644 --- a/app/services/issues/move_service.rb +++ b/app/services/issues/move_service.rb @@ -77,9 +77,9 @@ module Issues end def unfold_references(content) - unfolder = Gitlab::Gfm::ReferenceUnfolder.new(content, @old_project, + rewriter = Gitlab::Gfm::ReferenceRewriter.new(content, @old_project, @current_user) - unfolder.unfold(@new_project) + rewriter.rewrite(@new_project) end def notify_participants diff --git a/lib/gitlab/gfm/reference_unfolder.rb b/lib/gitlab/gfm/reference_rewriter.rb similarity index 69% rename from lib/gitlab/gfm/reference_unfolder.rb rename to 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 diff --git a/spec/lib/gitlab/gfm/reference_unfolder_spec.rb b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb similarity index 94% rename from spec/lib/gitlab/gfm/reference_unfolder_spec.rb rename to spec/lib/gitlab/gfm/reference_rewriter_spec.rb index 2e3b77d9180..db7bee110af 100644 --- a/spec/lib/gitlab/gfm/reference_unfolder_spec.rb +++ b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Gitlab::Gfm::ReferenceUnfolder do +describe Gitlab::Gfm::ReferenceRewriter do let(:text) { 'some text' } let(:old_project) { create(:project) } let(:new_project) { create(:project) } @@ -8,9 +8,9 @@ describe Gitlab::Gfm::ReferenceUnfolder do before { old_project.team << [user, :guest] } - describe '#unfold' do + describe '#rewrite' do subject do - described_class.new(text, old_project, user).unfold(new_project) + described_class.new(text, old_project, user).rewrite(new_project) end context 'multiple issues and merge requests referenced' do -- GitLab