Module: Gitlab::RelativePositioning

Included in:
RelativePositioning
Defined in:
lib/gitlab/relative_positioning.rb,
lib/gitlab/relative_positioning/gap.rb,
lib/gitlab/relative_positioning/mover.rb,
lib/gitlab/relative_positioning/range.rb,
lib/gitlab/relative_positioning/ending_at.rb,
lib/gitlab/relative_positioning/closed_range.rb,
lib/gitlab/relative_positioning/item_context.rb,
lib/gitlab/relative_positioning/starting_from.rb

Defined Under Namespace

Classes: ClosedRange, EndingAt, Gap, ItemContext, Mover, Range, StartingFrom

Constant Summary collapse

STEPS =
10
IDEAL_DISTANCE =
2**(STEPS - 1) + 1
MIN_POSITION =
Gitlab::Database::MIN_INT_VALUE
START_POSITION =
0
MAX_POSITION =
Gitlab::Database::MAX_INT_VALUE
MAX_GAP =
IDEAL_DISTANCE * 2
MIN_GAP =
2
NoSpaceLeft =
Class.new(StandardError)
InvalidPosition =
Class.new(StandardError)
IllegalRange =
Class.new(ArgumentError)
IssuePositioningDisabled =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.range(lhs, rhs) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/gitlab/relative_positioning.rb', line 20

def self.range(lhs, rhs)
  if lhs && rhs
    ClosedRange.new(lhs, rhs)
  elsif lhs
    StartingFrom.new(lhs)
  elsif rhs
    EndingAt.new(rhs)
  else
    raise IllegalRange, 'One of rhs or lhs must be provided' unless lhs && rhs
  end
end