Skip to content
Snippets Groups Projects
Commit a761c59a authored by hhoopes's avatar hhoopes Committed by Sean McGivern
Browse files

Add keyword arguments to truncated_diff method

* Added keyword arguments to truncated_diff_lines method to allow for using highlighting or not (html templates vs. text)
* Tweaked templates for consistency and format appropriateness
parent f928dba9
No related branches found
No related tags found
No related merge requests found
Showing with 38 additions and 55 deletions
Loading
Loading
@@ -27,7 +27,7 @@ class Discussion
 
delegate :blob,
:highlighted_diff_lines,
:text_parsed_diff_lines,
:diff_lines,
 
to: :diff_file,
allow_nil: true
Loading
Loading
@@ -164,10 +164,11 @@ class Discussion
end
 
# Returns an array of at most 16 highlighted lines above a diff note
def truncated_diff_lines
def truncated_diff_lines(highlight: true)
initial_lines = highlight ? highlighted_diff_lines : diff_lines
prev_lines = []
 
diff_file.diff_lines.each do |line|
initial_lines.each do |line|
if line.meta?
prev_lines.clear
else
Loading
Loading
Loading
Loading
@@ -9,7 +9,7 @@
%table
- discussions = { discussion.original_line_code => discussion }
= render partial: "projects/diffs/line",
collection: discussion.highlighted_diff_lines(discussion.truncated_diff_lines),
collection: discussion.highlighted_diff_lines,
as: :line,
locals: { diff_file: diff_file,
discussions: discussions,
Loading
Loading
<% if current_application_settings.email_author_in_body %>
<%= @note.author_name %> wrote:
<% end -%>
<%= @note.note %>
= content_for :head do
= stylesheet_link_tag 'mailers/highlighted_diff_email'
 
New comment
- if @note.diff_note? && @note.diff_file
on
= link_to @note.diff_file.file_path, @target_url, class: 'details'
\:
\:
 
- if @discussion
%table
= render partial: "projects/diffs/line",
collection: @discussion.highlighted_diff_lines(@discussion.truncated_diff_lines),
collection: @discussion.truncated_diff_lines,
as: :line,
locals: { diff_file: @note.diff_file,
plain: true,
email: true }
plain: true,
email: true }
 
= render 'note_message'
<% if @note.diff_note? && @note.diff_file -%>
on <%= @note.diff_file.file_path -%>
<% end -%>:
<%= url %>
<%= render 'simple_diff' if @discussion -%>
<%= render 'note_message' %>
<% lines = @discussion.truncated_diff_lines %>
<% @discussion.text_parsed_diff_lines(lines).each do |line| %>
<%= line %>
<% @discussion.truncated_diff_lines(highlight: false).each do |line| %>
<%= "> " + line.text %>
<% end %>
%p.details
New comment for Commit
= @commit.short_id
= render 'note_mr_or_commit_email'
New comment for Commit <%= @commit.short_id %>
<% url = url_for(namespace_project_commit_url(@note.project.namespace, @note.project, id: @commit.id, anchor: "note_#{@note.id}")) %>
 
<%= url_for(namespace_project_commit_url(@note.project.namespace, @note.project, id: @commit.id, anchor: "note_#{@note.id}")) %>
<%= render 'simple_diff' if @discussion %>
<% if current_application_settings.email_author_in_body %>
<%= @note.author_name %> wrote:
<% end %>
<%= @note.note %>
New comment for Commit <%= @commit.short_id -%>
<%= render partial: 'note_mr_or_commit_email', locals: { url: url } %>
%p.details
New comment for Merge Request
= @merge_request.to_reference
= render 'note_mr_or_commit_email'
New comment for Merge Request <%= @merge_request.to_reference %>
<% url = url_for(namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request, anchor: "note_#{@note.id}")) %>
 
<%= url_for(namespace_project_merge_request_url(@merge_request.target_project.namespace, @merge_request.target_project, @merge_request, anchor: "note_#{@note.id}")) %>
<%= render 'simple_diff' if @discussion %>
<% if current_application_settings.email_author_in_body %>
<%= @note.author_name %> wrote:
<% end %>
<%= @note.note %>
New comment for Merge Request <%= @merge_request.to_reference -%>
<%= render partial: 'note_mr_or_commit_email', locals: { url: url }%>
Loading
Loading
@@ -76,15 +76,8 @@ module Gitlab
@diff_lines ||= Gitlab::Diff::Parser.new.parse(raw_diff.each_line).to_a
end
 
def highlighted_diff_lines(lines = self)
@highlighted_diff_lines ||= Gitlab::Diff::Highlight.new(lines, repository: self.repository).highlight
end
def text_parsed_diff_lines(lines)
@text_parsed_diff_lines ||=
lines.map do | line |
"> " + line.text
end
def highlighted_diff_lines
@highlighted_diff_lines ||= Gitlab::Diff::Highlight.new(self, repository: self.repository).highlight
end
 
# Array[<Hash>] with right/left keys that contains Gitlab::Diff::Line objects which text is hightlighted
Loading
Loading
Loading
Loading
@@ -697,7 +697,7 @@ describe Notify do
let(:note) { create(model, project: project, author: note_author) }
 
it "includes diffs with character-level highlighting" do
is_expected.to have_body_text /\<span class='idiff left right'>vars = {<\/span>/
is_expected.to have_body_text /<span class=\"p\">}<\/span><\/span>/
end
 
it 'contains a link to the diff file' do
Loading
Loading
@@ -743,9 +743,6 @@ describe Notify do
subject { Notify.note_commit_email(recipient.id, note.id) }
 
it_behaves_like 'a note email on a diff', :diff_note_on_commit
# it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do
# let(:model) { commit }
# end
it_behaves_like 'it should show Gmail Actions View Commit link'
it_behaves_like 'a user cannot unsubscribe through footer link'
end
Loading
Loading
@@ -757,9 +754,6 @@ describe Notify do
subject { Notify.note_merge_request_email(recipient.id, note.id) }
 
it_behaves_like 'a note email on a diff', :diff_note_on_merge_request
# it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do
# let(:model) { merge_request }
# end
it_behaves_like 'it should show Gmail Actions View Merge request link'
it_behaves_like 'an unsubscribeable thread'
end
Loading
Loading
Loading
Loading
@@ -595,7 +595,7 @@ describe Discussion, model: true do
let(:truncated_lines) { subject.truncated_diff_lines }
 
context "when diff is greater than allowed number of truncated diff lines " do
let(:initial_line_count) { subject.diff_file.diff_lines.count }
let(:initial_line_count) { subject.diff_lines.count }
let(:truncated_line_count) { truncated_lines.count }
 
it "returns fewer lines" do
Loading
Loading
@@ -606,7 +606,7 @@ describe Discussion, model: true do
end
 
context "when some diff lines are meta" do
let(:initial_meta_lines?) { subject.diff_file.diff_lines.any?(&:meta?) }
let(:initial_meta_lines?) { subject.diff_lines.any?(&:meta?) }
let(:truncated_meta_lines?) { truncated_lines.any?(&:meta?) }
 
it "returns no meta lines" do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment