class Hanoi::Jane::Dropper

Public Class Methods

new(stack, item, full_drop = false) click to toggle source
# File lib/hanoi/jane/animation/dropper.rb, line 4
def initialize stack, item, full_drop = false
  stack.map { |i| self.push i }
  @item = item
  @full_drop = full_drop
end
position(stack, item) click to toggle source
# File lib/hanoi/jane/animation/dropper.rb, line 37
def Dropper.position stack, item
  pos = stack.index item
  return stack.length - 1 unless pos
  pos - 1
end

Public Instance Methods

drop() click to toggle source
# File lib/hanoi/jane/animation/dropper.rb, line 10
def drop
  pos = Dropper.position self, @item
  self[pos] = @item

  unless pos >= self.length - 1
    self[pos + 1] = nil
  end
end
dropped() click to toggle source
# File lib/hanoi/jane/animation/dropper.rb, line 19
def dropped
  if @full_drop
    return self[(Dropper.position self, @item)] || (Dropper.position self, @item) < 0
  end
  
  (
    self[(Dropper.position self, @item) - 1] ||
    self[(Dropper.position self, @item)]
  ) || (Dropper.position self, @item) == 0
end
each() { |self| ... } click to toggle source
# File lib/hanoi/jane/animation/dropper.rb, line 30
def each
  until dropped
    drop
    yield self
  end
end