diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-08-02 14:31:50 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-08-02 14:31:50 +0200 |
| commit | dab53a1ef28ecc281d574b50d3433e806db375cd (patch) | |
| tree | 54970ba3fda4907b61b7e44e176a322ca29ade63 /app/helpers/revisions_helper.rb | |
| parent | 097a211bbe15127c36e93bde9c8ca2f112f7db0e (diff) | |
Keep the compared translation independent of the interface language
Diffstat (limited to 'app/helpers/revisions_helper.rb')
| -rw-r--r-- | app/helpers/revisions_helper.rb | 17 |
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 | ||
| 7 | end | 24 | end |
