From f827482c12b3aeec2ed5f60afbf7c676e27435e3 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Thu, 4 Sep 2014 11:25:14 +0200 Subject: [PATCH] Remove duplication, expand for next_line. --- app/helpers/commits_helper.rb | 4 +- .../projects/commits/_parallel_view.html.haml | 7 ++- .../diffs/_match_line_parallel.html.haml | 4 ++ lib/gitlab/diff_parser.rb | 43 +------------------ 4 files changed, 12 insertions(+), 46 deletions(-) create mode 100644 app/views/projects/commits/diffs/_match_line_parallel.html.haml diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb index 2c1df6beeab..fe6c303ecf2 100644 --- a/app/helpers/commits_helper.rb +++ b/app/helpers/commits_helper.rb @@ -25,8 +25,8 @@ module CommitsHelper def side_diff_line(diff, index) Gitlab::DiffParser.new(diff.diff.lines.to_a, diff.new_path) - .each_for_parallel do |full_line, type, line_code, line_new, line_old, next_line| - yield(full_line, type, line_code, line_new, line_old, next_line) + .each do |full_line, type, line_code, line_new, line_old, raw_line, next_line| + yield(full_line, type, line_code, line_new, line_old, raw_line, next_line) end end diff --git a/app/views/projects/commits/_parallel_view.html.haml b/app/views/projects/commits/_parallel_view.html.haml index e566b1dfca4..92425f36577 100644 --- a/app/views/projects/commits/_parallel_view.html.haml +++ b/app/views/projects/commits/_parallel_view.html.haml @@ -1,10 +1,13 @@ / Side-by-side diff view %div.text-file %table - - side_diff_line(diff, index) do |line, type, line_code, line_new, line_old, next_line| + - side_diff_line(diff, index) do |line, type, line_code, line_new, line_old, raw_line, next_line| - next if type == 'new' %tr.line_holder.parallel{ id: line_code, class: "#{type}" } - - if type != 'match' + - if type == "match" + = render "projects/commits/diffs/match_line_parallel", {line: line, + line_old: line_old, line_new: line_new, bottom: false} + - else %td.old_line = link_to raw(line_old), "##{line_code}", id: line_code - if type == 'old' diff --git a/app/views/projects/commits/diffs/_match_line_parallel.html.haml b/app/views/projects/commits/diffs/_match_line_parallel.html.haml new file mode 100644 index 00000000000..815df16aa4a --- /dev/null +++ b/app/views/projects/commits/diffs/_match_line_parallel.html.haml @@ -0,0 +1,4 @@ +%td.old_line + %td.line_content.parallel.matched= line +%td.new_line + %td.line_content.parallel.matched= line diff --git a/lib/gitlab/diff_parser.rb b/lib/gitlab/diff_parser.rb index baec2e63baa..f226692a63c 100644 --- a/lib/gitlab/diff_parser.rb +++ b/lib/gitlab/diff_parser.rb @@ -14,47 +14,6 @@ module Gitlab line_new = 1 type = nil - lines_arr = ::Gitlab::InlineDiff.processing lines - lines_arr.each do |line| - raw_line = line.dup - - next if filename?(line) - - full_line = html_escape(line.gsub(/\n/, '')) - full_line = ::Gitlab::InlineDiff.replace_markers full_line - - if line.match(/^@@ -/) - type = "match" - - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0 - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0 - - next if line_old == 1 && line_new == 1 #top of file - yield(full_line, type, nil, line_new, line_old) - next - else - type = identification_type(line) - line_code = generate_line_code(new_path, line_new, line_old) - yield(full_line, type, line_code, line_new, line_old, raw_line) - end - - - if line[0] == "+" - line_new += 1 - elsif line[0] == "-" - line_old += 1 - else - line_new += 1 - line_old += 1 - end - end - end - - def each_for_parallel - line_old = 1 - line_new = 1 - type = nil - lines_arr = ::Gitlab::InlineDiff.processing lines lines_arr.each_cons(2) do |line, next_line| @@ -80,7 +39,7 @@ module Gitlab else type = identification_type(line) line_code = generate_line_code(new_path, line_new, line_old) - yield(full_line, type, line_code, line_new, line_old, next_line) + yield(full_line, type, line_code, line_new, line_old, raw_line, next_line) end