summaryrefslogtreecommitdiff
path: root/app/models/note.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-08 16:27:12 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-08 16:27:12 +0300
commit531f16beb0a860a94f732f9e697a447513abe363 (patch)
tree18c2715734fb078294d9db49e104de4528eb1a0d /app/models/note.rb
parente0eb48031dc3ed8079c637fa3b82556747f9f8e0 (diff)
downloadgitlab-ce-531f16beb0a860a94f732f9e697a447513abe363.tar.gz
Use new diff parsing logic
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/models/note.rb')
-rw-r--r--app/models/note.rb39
1 files changed, 32 insertions, 7 deletions
diff --git a/app/models/note.rb b/app/models/note.rb
index 7cbab1130ea..77e3a528f96 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -209,9 +209,10 @@ class Note < ActiveRecord::Base
noteable.diffs.each do |mr_diff|
next unless mr_diff.new_path == self.diff.new_path
- Gitlab::DiffParser.new(mr_diff.diff.lines.to_a, mr_diff.new_path).
- each do |full_line, type, line_code, line_new, line_old|
- if full_line == diff_line
+ lines = Gitlab::Diff::Parser.new.parse(mr_diff.diff.lines.to_a, mr_diff.old_path, mr_diff.new_path)
+
+ lines.each do |line|
+ if line.text == diff_line
return true
end
end
@@ -244,15 +245,39 @@ class Note < ActiveRecord::Base
return @diff_line if @diff_line
if diff
- Gitlab::DiffParser.new(diff.diff.lines.to_a, diff.new_path)
- .each do |full_line, type, line_code, line_new, line_old|
- @diff_line = full_line if line_code == self.line_code
- end
+ diff_lines.each do |line|
+ @diff_line = line.text if line.code == self.line_code
+ end
end
@diff_line
end
+ def truncated_diff_lines
+ max_number_of_lines = 16
+ prev_match_line = nil
+ prev_lines = []
+
+ diff_lines.each do |line|
+ if line.code != self.line_code
+ if line.type == "match"
+ prev_lines.clear
+ prev_match_line = line
+ else
+ prev_lines.push(line)
+ prev_lines.shift if prev_lines.length >= max_number_of_lines
+ end
+ else
+ prev_lines << line
+ return prev_lines
+ end
+ end
+ end
+
+ def diff_lines
+ @diff_lines ||= Gitlab::Diff::Parser.new.parse(diff.diff.lines.to_a, diff.old_path, diff.new_path)
+ end
+
def discussion_id
@discussion_id ||= Note.build_discussion_id(noteable_type, noteable_id || commit_id, line_code)
end