summaryrefslogtreecommitdiff
path: root/app/helpers/revisions_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/revisions_helper.rb')
-rw-r--r--app/helpers/revisions_helper.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/app/helpers/revisions_helper.rb b/app/helpers/revisions_helper.rb
index a6290133..25a2aa38 100644
--- a/app/helpers/revisions_helper.rb
+++ b/app/helpers/revisions_helper.rb
@@ -4,4 +4,21 @@ module RevisionsHelper
4 def describe_page_reference(ref) 4 def describe_page_reference(ref)
5 %w[head draft autosave].include?(ref.to_s) ? ref.to_s.capitalize : "revision #{ref}" 5 %w[head draft autosave].include?(ref.to_s) ? ref.to_s.capitalize : "revision #{ref}"
6 end 6 end
7
8 def neighbour_revision_pairs node, start_ref, end_ref
9 return [nil, nil] unless start_ref.to_s.match?(/\A\d+\z/) &&
10 end_ref.to_s.match?(/\A\d+\z/)
11
12 a, b = start_ref.to_i, end_ref.to_i
13 return [nil, nil] unless (a - b).abs == 1
14
15 lo, hi = [a, b].minmax
16 forward = a < b
17 earlier = forward ? [lo - 1, lo] : [lo, lo - 1]
18 later = forward ? [hi, hi + 1] : [hi + 1, hi]
19
20 [earlier, later].map do |pair|
21 pair if pair.all? { |rev| node.pages.exists?(:revision => rev) }
22 end
23 end
7end 24end