diff options
Diffstat (limited to 'lib/gitlab/relative_positioning')
-rw-r--r-- | lib/gitlab/relative_positioning/closed_range.rb | 13 | ||||
-rw-r--r-- | lib/gitlab/relative_positioning/ending_at.rb | 18 | ||||
-rw-r--r-- | lib/gitlab/relative_positioning/range.rb | 34 | ||||
-rw-r--r-- | lib/gitlab/relative_positioning/starting_from.rb | 18 |
4 files changed, 49 insertions, 34 deletions
diff --git a/lib/gitlab/relative_positioning/closed_range.rb b/lib/gitlab/relative_positioning/closed_range.rb new file mode 100644 index 00000000000..8916d1face5 --- /dev/null +++ b/lib/gitlab/relative_positioning/closed_range.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Gitlab + module RelativePositioning + class ClosedRange < RelativePositioning::Range + def initialize(lhs, rhs) + @lhs, @rhs = lhs, rhs + raise IllegalRange, 'Either lhs or rhs is missing' unless lhs && rhs + raise IllegalRange, 'lhs and rhs cannot be the same object' if lhs == rhs + end + end + end +end diff --git a/lib/gitlab/relative_positioning/ending_at.rb b/lib/gitlab/relative_positioning/ending_at.rb new file mode 100644 index 00000000000..61060638ee6 --- /dev/null +++ b/lib/gitlab/relative_positioning/ending_at.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Gitlab + module RelativePositioning + class EndingAt < RelativePositioning::Range + include Gitlab::Utils::StrongMemoize + + def initialize(rhs) + @rhs = rhs + raise IllegalRange, 'rhs is required' unless rhs + end + + def lhs + strong_memoize(:lhs) { rhs.lhs_neighbour } + end + end + end +end diff --git a/lib/gitlab/relative_positioning/range.rb b/lib/gitlab/relative_positioning/range.rb index 0b0ccdf5be4..3214c72eb8b 100644 --- a/lib/gitlab/relative_positioning/range.rb +++ b/lib/gitlab/relative_positioning/range.rb @@ -31,39 +31,5 @@ module Gitlab other.is_a?(RelativePositioning::Range) && lhs == other.lhs && rhs == other.rhs end end - - class ClosedRange < RelativePositioning::Range - def initialize(lhs, rhs) - @lhs, @rhs = lhs, rhs - raise IllegalRange, 'Either lhs or rhs is missing' unless lhs && rhs - raise IllegalRange, 'lhs and rhs cannot be the same object' if lhs == rhs - end - end - - class StartingFrom < RelativePositioning::Range - include Gitlab::Utils::StrongMemoize - - def initialize(lhs) - @lhs = lhs - raise IllegalRange, 'lhs is required' unless lhs - end - - def rhs - strong_memoize(:rhs) { lhs.rhs_neighbour } - end - end - - class EndingAt < RelativePositioning::Range - include Gitlab::Utils::StrongMemoize - - def initialize(rhs) - @rhs = rhs - raise IllegalRange, 'rhs is required' unless rhs - end - - def lhs - strong_memoize(:lhs) { rhs.lhs_neighbour } - end - end end end diff --git a/lib/gitlab/relative_positioning/starting_from.rb b/lib/gitlab/relative_positioning/starting_from.rb new file mode 100644 index 00000000000..6ddd35a39ad --- /dev/null +++ b/lib/gitlab/relative_positioning/starting_from.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Gitlab + module RelativePositioning + class StartingFrom < RelativePositioning::Range + include Gitlab::Utils::StrongMemoize + + def initialize(lhs) + @lhs = lhs + raise IllegalRange, 'lhs is required' unless lhs + end + + def rhs + strong_memoize(:rhs) { lhs.rhs_neighbour } + end + end + end +end |