Class: Dyph::Support::DiffDoubleQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/dyph/support/diff3.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(left = [], right = []) ⇒ DiffDoubleQueue



110
111
112
# File 'lib/dyph/support/diff3.rb', line 110

def initialize(left=[], right=[])
  @diffs = { left: left, right: right }
end

Instance Attribute Details

#current_sideObject (readonly)

Returns the value of attribute current_side.



109
110
111
# File 'lib/dyph/support/diff3.rb', line 109

def current_side
  @current_side
end

Instance Method Details

#choose_sideObject



142
143
144
145
146
147
148
149
150
151
# 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) ⇒ Object



114
115
116
# File 'lib/dyph/support/diff3.rb', line 114

def dequeue(side=current_side)
  @diffs[side].shift
end

#empty?(side = current_side) ⇒ Boolean



134
135
136
# File 'lib/dyph/support/diff3.rb', line 134

def empty?(side=current_side)
  @diffs[side].empty?
end

#enqueue(side = current_side, val) ⇒ Object



126
127
128
# File 'lib/dyph/support/diff3.rb', line 126

def enqueue(side=current_side, val)
  @diffs[side] << val
end

#finished?Boolean



122
123
124
# File 'lib/dyph/support/diff3.rb', line 122

def finished?
  empty?(:left) && empty?(:right)
end

#get(side = current_side) ⇒ Object



130
131
132
# File 'lib/dyph/support/diff3.rb', line 130

def get(side=current_side)
  @diffs[side]
end

#peek(side = current_side) ⇒ Object



118
119
120
# File 'lib/dyph/support/diff3.rb', line 118

def peek(side=current_side)
  @diffs[side]
end

#switch_sides(side = current_side) ⇒ Object



138
139
140
# File 'lib/dyph/support/diff3.rb', line 138

def switch_sides(side=current_side)
  @current_side = side == :left ? :right : :left
end