class Dyph::Support::DiffDoubleQueue

Attributes

current_side[R]

Public Class Methods

new(left=[], right=[]) click to toggle source
# File lib/dyph/support/diff3.rb, line 110
def initialize(left=[], right=[])
  @diffs = { left: left, right: right }
end

Public Instance Methods

choose_side() click to toggle source
# File lib/dyph/support/diff3.rb, line 142
def choose_side
  if empty? :left
    @current_side = :right
  elsif empty? :right
    @current_side = :left
  else
    #choose the lowest side relative to base
    @current_side = get(:left).first.base_lo <= get(:right).first.base_lo ? :left : :right
  end
end
dequeue(side=current_side) click to toggle source
# File lib/dyph/support/diff3.rb, line 114
def dequeue(side=current_side)
  @diffs[side].shift
end
empty?(side=current_side) click to toggle source
# File lib/dyph/support/diff3.rb, line 134
def empty?(side=current_side)
  @diffs[side].empty?
end
enqueue(side=current_side, val) click to toggle source
# File lib/dyph/support/diff3.rb, line 126
def enqueue(side=current_side, val)
  @diffs[side] << val
end
finished?() click to toggle source
# File lib/dyph/support/diff3.rb, line 122
def finished?
  empty?(:left) && empty?(:right)
end
get(side=current_side) click to toggle source
# File lib/dyph/support/diff3.rb, line 130
def get(side=current_side)
  @diffs[side]
end
peek(side=current_side) click to toggle source
# File lib/dyph/support/diff3.rb, line 118
def peek(side=current_side)
  @diffs[side]
end
switch_sides(side=current_side) click to toggle source
# File lib/dyph/support/diff3.rb, line 138
def switch_sides(side=current_side)
  @current_side = side == :left ? :right : :left
end