Commit b4cc04d7e17eeefe6d89bbb72661a43d7d9e3e2e
1 parent
73efb837
Exists in
master
and in
4 other branches
Commit diff fixes, per-line comments fixed
Showing
5 changed files
with
66 additions
and
83 deletions
Show diff stats
app/helpers/commits_helper.rb
... | ... | @@ -7,16 +7,6 @@ module CommitsHelper |
7 | 7 | |
8 | 8 | end |
9 | 9 | |
10 | - def diff_line_class(line) | |
11 | - if line[0] == "+" | |
12 | - "new" | |
13 | - elsif line[0] == "-" | |
14 | - "old" | |
15 | - else | |
16 | - nil | |
17 | - end | |
18 | - end | |
19 | - | |
20 | 10 | def more_commits_link |
21 | 11 | offset = params[:offset] || 0 |
22 | 12 | limit = params[:limit] || 100 |
... | ... | @@ -42,11 +32,56 @@ module CommitsHelper |
42 | 32 | preserve out |
43 | 33 | end |
44 | 34 | |
45 | - def build_line_code(line, index, line_new, line_old) | |
46 | - if diff_line_class(line) == "new" | |
47 | - "NEW_#{index}_#{line_new}" | |
35 | + def diff_line_class(line) | |
36 | + if line[0] == "+" | |
37 | + "new" | |
38 | + elsif line[0] == "-" | |
39 | + "old" | |
48 | 40 | else |
49 | - "OLD_#{index}_#{line_old}" | |
41 | + nil | |
42 | + end | |
43 | + end | |
44 | + | |
45 | + def build_line_code(line, index, line_new, line_old) | |
46 | + "#{index}_#{line_old}_#{line_new}" | |
47 | + end | |
48 | + | |
49 | + def each_diff_line(diff_arr, index) | |
50 | + line_old = 1 | |
51 | + line_new = 1 | |
52 | + type = nil | |
53 | + | |
54 | + lines_arr = diff_arr | |
55 | + lines_arr.each do |line| | |
56 | + full_line = html_escape(line.gsub(/\n/, '')) | |
57 | + | |
58 | + next if line.match(/^--- \/dev\/null/) | |
59 | + next if line.match(/^--- a/) | |
60 | + next if line.match(/^\+\+\+ b/) | |
61 | + if line.match(/^@@ -/) | |
62 | + next if line_old == 1 && line_new == 1 | |
63 | + type = "match" | |
64 | + | |
65 | + line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0 | |
66 | + line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0 | |
67 | + | |
68 | + yield(nil, type, nil, nil, nil) | |
69 | + next | |
70 | + else | |
71 | + type = diff_line_class(line) | |
72 | + line_code = build_line_code(line, index, line_new, line_old) | |
73 | + yield(full_line, type, line_code, line_new, line_old) | |
74 | + end | |
75 | + | |
76 | + | |
77 | + if line[0] == "+" | |
78 | + line_new += 1 | |
79 | + elsif line[0] == "-" | |
80 | + line_old += 1 | |
81 | + else | |
82 | + line_new += 1 | |
83 | + line_old += 1 | |
84 | + end | |
50 | 85 | end |
51 | 86 | end |
52 | 87 | end | ... | ... |
app/models/note.rb
... | ... | @@ -57,23 +57,6 @@ class Note < ActiveRecord::Base |
57 | 57 | rescue |
58 | 58 | nil |
59 | 59 | end |
60 | - | |
61 | - def line_file_id | |
62 | - @line_file_id ||= line_code.split("_")[1].to_i if line_code | |
63 | - end | |
64 | - | |
65 | - def line_type_id | |
66 | - @line_type_id ||= line_code.split("_").first if line_code | |
67 | - end | |
68 | - | |
69 | - def line_number | |
70 | - @line_number ||= line_code.split("_").last.to_i if line_code | |
71 | - end | |
72 | - | |
73 | - def for_line?(file_id, old_line, new_line) | |
74 | - line_file_id == file_id && | |
75 | - ((line_type_id == "NEW" && line_number == new_line) || (line_type_id == "OLD" && line_number == old_line )) | |
76 | - end | |
77 | 60 | end |
78 | 61 | # == Schema Information |
79 | 62 | # | ... | ... |
app/views/commits/_text_file.html.haml
1 | 1 | %table |
2 | - - line_old = 0 | |
3 | - - line_new = 0 | |
4 | - - diff_str = diff.diff | |
5 | - - lines_arr = diff_str.lines.to_a | |
6 | - - lines_arr.each do |line| | |
7 | - - next if line.match(/^--- \/dev\/null/) | |
8 | - - next if line.match(/^--- a/) | |
9 | - - next if line.match(/^\+\+\+ b/) | |
10 | - - if line.match(/^@@ -/) | |
11 | - - unless line_old.zero? && line_new.zero? | |
12 | - %tr.line_holder | |
13 | - %td.old_line= "..." | |
14 | - %td.new_line= "..." | |
15 | - %td.line_content | |
16 | - | |
17 | - - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0 | |
18 | - - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0 | |
19 | - - next | |
20 | - | |
21 | - - full_line = html_escape(line.gsub(/\n/, '')) | |
2 | + - each_diff_line(diff.diff.lines.to_a, index) do |line, type, line_code, line_new, line_old| | |
22 | 3 | %tr.line_holder |
23 | - %td.old_line | |
24 | - = link_to raw(diff_line_class(line) == "new" ? " " : line_old), "#OLD#{index}-#{line_old}", :id => "OLD#{index}-#{line_old}" | |
25 | - %td.new_line | |
26 | - = link_to raw(diff_line_class(line) == "old" ? " " : line_new) , "#NEW#{index}-#{line_new}", :id => "NEW#{index}-#{line_new}" | |
27 | - %td.line_content{:class => "#{diff_line_class(full_line)} #{build_line_code(line, index, line_new, line_old)}", "line_code" => build_line_code(line, index, line_new, line_old)}= raw "#{full_line} " | |
28 | - - comments = @line_notes.select { |n| n.for_line?(index, line_old, line_new) }.sort_by(&:created_at).reverse | |
29 | - - unless comments.empty? | |
30 | - - comments.each do |note| | |
31 | - = render "notes/per_line_show", :note => note | |
32 | - - if line[0] == "+" | |
33 | - - line_new += 1 | |
34 | - - elsif line[0] == "-" | |
35 | - - line_old += 1 | |
36 | - - else | |
37 | - - line_new += 1 | |
38 | - - line_old += 1 | |
4 | + - if type == "match" | |
5 | + %td.old_line= "..." | |
6 | + %td.new_line= "..." | |
7 | + %td.line_content | |
8 | + - else | |
9 | + %td.old_line= link_to raw(type == "new" ? " " : line_old), "##{line_code}", :id => line_code | |
10 | + %td.new_line= link_to raw(type == "old" ? " " : line_new) , "##{line_code}", :id => line_code | |
11 | + %td.line_content{:class => "noteable_line #{type} #{line_code}", "line_code" => line_code}= raw "#{line} " | |
12 | + | |
13 | + - comments = @line_notes.select { |n| n.line_code == line_code }.sort_by(&:created_at).reverse | |
14 | + - unless comments.empty? | |
15 | + - comments.each do |note| | |
16 | + = render "notes/per_line_show", :note => note | |
17 | + - @line_notes.reject!{ |n| n == note } | ... | ... |
app/views/commits/show.html.haml
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | |
30 | 30 | :javascript |
31 | 31 | $(document).ready(function(){ |
32 | - $(".line_content").live("dblclick", function(e) { | |
32 | + $(".noteable_line").live("dblclick", function(e) { | |
33 | 33 | var form = $(".per_line_form"); |
34 | 34 | $(this).parent().after(form); |
35 | 35 | form.find("#note_line_code").val($(this).attr("line_code")); | ... | ... |
spec/models/note_spec.rb
... | ... | @@ -42,27 +42,13 @@ describe Note do |
42 | 42 | :project => project, |
43 | 43 | :noteable_id => commit.id, |
44 | 44 | :noteable_type => "Commit", |
45 | - :line_code => "OLD_1_23" | |
45 | + :line_code => "0_16_1" | |
46 | 46 | end |
47 | 47 | |
48 | 48 | it "should save a valid note" do |
49 | 49 | @note.noteable_id.should == commit.id |
50 | 50 | @note.target.id.should == commit.id |
51 | 51 | end |
52 | - | |
53 | - it { @note.line_type_id.should == "OLD" } | |
54 | - it { @note.line_file_id.should == 1 } | |
55 | - it { @note.line_number.should == 23 } | |
56 | - | |
57 | - it { @note.for_line?(1, 23, 34).should be_true } | |
58 | - it { @note.for_line?(1, 23, nil).should be_true } | |
59 | - it { @note.for_line?(1, 23, 0).should be_true } | |
60 | - it { @note.for_line?(1, 23, 23).should be_true } | |
61 | - | |
62 | - it { @note.for_line?(1, nil, 34).should be_false } | |
63 | - it { @note.for_line?(1, 24, nil).should be_false } | |
64 | - it { @note.for_line?(1, 24, 0).should be_false } | |
65 | - it { @note.for_line?(1, 24, 23).should be_false } | |
66 | 52 | end |
67 | 53 | |
68 | 54 | describe :authorization do | ... | ... |