36 lines
849 B
Ruby
36 lines
849 B
Ruby
![]() |
# frozen_string_literal: true
|
||
|
|
||
|
module Gitlab
|
||
|
module RelativePositioning
|
||
|
class Range
|
||
|
attr_reader :lhs, :rhs
|
||
|
|
||
|
def open_on_left?
|
||
|
lhs.nil?
|
||
|
end
|
||
|
|
||
|
def open_on_right?
|
||
|
rhs.nil?
|
||
|
end
|
||
|
|
||
|
def cover?(item_context)
|
||
|
return false unless item_context
|
||
|
return false unless item_context.positioned?
|
||
|
return true if item_context.object == lhs&.object
|
||
|
return true if item_context.object == rhs&.object
|
||
|
|
||
|
pos = item_context.relative_position
|
||
|
|
||
|
return lhs.relative_position < pos if open_on_right?
|
||
|
return pos < rhs.relative_position if open_on_left?
|
||
|
|
||
|
lhs.relative_position < pos && pos < rhs.relative_position
|
||
|
end
|
||
|
|
||
|
def ==(other)
|
||
|
other.is_a?(RelativePositioning::Range) && lhs == other.lhs && rhs == other.rhs
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|