From d2021256f0ffbde994cbce5eb409966b3d6dcd78 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Sat, 8 Feb 2020 04:15:33 +0000 Subject: [PATCH] Fix instances where a carriage return is replaced with another - It was causing two
elements to be inserted - Now the delete and insert paragraph marks are located next to each other --- app/logical/diff_builder.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/logical/diff_builder.rb b/app/logical/diff_builder.rb index e3d7192ee..1d623261f 100644 --- a/app/logical/diff_builder.rb +++ b/app/logical/diff_builder.rb @@ -20,6 +20,14 @@ class DiffBuilder output.each { |q| q.replace(escape_html[q]) } diffs.reverse_each do |hunk| + old_cr = hunk[0].try(:old_element) + new_cr = hunk[1].try(:new_element) + if old_cr && new_cr && old_cr.match?(/^\r?\n$/) && new_cr.match?(/^\r?\n$/) + hunk_position = hunk[0].old_position + output[hunk_position] = '
' + next + end + newchange = hunk.max {|a, b| a.old_position <=> b.old_position} newstart = newchange.old_position oldstart = hunk.min {|a, b| a.old_position <=> b.old_position}.old_position