class Tuple

Array where elements can be shrunk but not removed

Public Class Methods

new(a) click to toggle source
# File lib/rantly/shrinks.rb, line 49
def initialize(a)
  @array = a
  @position = a.size - 1
end

Public Instance Methods

[](i) click to toggle source
# File lib/rantly/shrinks.rb, line 54
def [](i)
  @array[i]
end
[]=(i, value) click to toggle source
# File lib/rantly/shrinks.rb, line 58
def []=(i, value)
  @array[i] = value
end
array() click to toggle source
# File lib/rantly/shrinks.rb, line 82
def array
  return @array
end
each(&block) click to toggle source
# File lib/rantly/shrinks.rb, line 78
def each(&block)
  @array.each(&block)
end
inspect() click to toggle source
# File lib/rantly/shrinks.rb, line 74
def inspect
  self.to_s
end
length() click to toggle source
# File lib/rantly/shrinks.rb, line 62
def length
  @array.length
end
retry?() click to toggle source
# File lib/rantly/shrinks.rb, line 102
def retry?
  @position >= 0
end
shrink() click to toggle source
# File lib/rantly/shrinks.rb, line 86
def shrink
  shrunk = @array.dup
  while @position >= 0
    e = @array.at(@position)
    if e.respond_to?(:shrinkable?) && e.shrinkable?
      break
    end
    @position -= 1
  end
  if @position >= 0
    shrunk[@position] = e.shrink
    @position -= 1
  end
  return Tuple.new(shrunk)
end
shrinkable?() click to toggle source
# File lib/rantly/shrinks.rb, line 106
def shrinkable?
  @array.any? {|e| e.respond_to?(:shrinkable?) && e.shrinkable? }
end
size() click to toggle source
# File lib/rantly/shrinks.rb, line 66
def size
  self.length
end
to_s() click to toggle source
# File lib/rantly/shrinks.rb, line 70
def to_s
  @array.to_s.insert(1, "T ")
end