Class: Hanoi::Jane::Dropper

Inherits:
Array
  • Object
show all
Defined in:
lib/hanoi/jane/animation/dropper.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stack, item) ⇒ Dropper

Returns a new instance of Dropper.



4
5
6
7
# File 'lib/hanoi/jane/animation/dropper.rb', line 4

def initialize stack, item
  stack.map { |i| self.push i }
  @item = item
end

Class Method Details

.position(stack, item) ⇒ Object



29
30
31
32
33
# File 'lib/hanoi/jane/animation/dropper.rb', line 29

def Dropper.position stack, item
  pos = stack.index item
  return stack.length - 1 unless pos
  pos - 1
end

Instance Method Details

#dropObject



9
10
11
12
13
14
15
16
# File 'lib/hanoi/jane/animation/dropper.rb', line 9

def drop
  pos = Dropper.position self, @item
  self[pos] = @item

  unless pos >= self.length - 1
    self[pos + 1] = nil
  end
end

#droppedObject



18
19
20
# File 'lib/hanoi/jane/animation/dropper.rb', line 18

def dropped
  (self[(Dropper.position self, @item) - 1] || self[(Dropper.position self, @item)]) || (Dropper.position self, @item) == 0
end

#eachObject



22
23
24
25
26
27
# File 'lib/hanoi/jane/animation/dropper.rb', line 22

def each 
  until dropped
    drop
    yield self
  end
end