class Rsirts::Ring

Attributes

elements[RW]
indx[RW]

Public Class Methods

new(elements) click to toggle source
# File lib/rsirts/renderer.rb, line 5
def initialize elements
  @elements = elements.dup
  @indx = 0
end

Public Instance Methods

add(new_elements) click to toggle source
# File lib/rsirts/renderer.rb, line 10
def add new_elements
  left = elements.take(indx)
  right = elements.drop(indx)
  self.elements = left + new_elements + right
end
next() click to toggle source
# File lib/rsirts/renderer.rb, line 28
def next
  result = elements[indx]
  increment_indx
  result
end
remove(count) click to toggle source
# File lib/rsirts/renderer.rb, line 16
def remove count
  from_indx = size - indx
  from_beg = count - from_indx
  if count >= from_indx
    elements.pop(from_indx)
    elements.slice!(0,from_beg) unless from_beg == 0
    self.indx = 0
  else
    elements.slice!(indx,count)
  end
end
size() click to toggle source
# File lib/rsirts/renderer.rb, line 34
def size
  elements.size
end

Private Instance Methods

increment_indx() click to toggle source
# File lib/rsirts/renderer.rb, line 42
def increment_indx
  self.indx = indx == (size - 1) ? 0 : indx + 1
end