Class: Nerve::RingBuffer

Inherits:
Array
  • Object
show all
Defined in:
lib/nerve/ring_buffer.rb

Instance Method Summary collapse

Constructor Details

#initialize(size) ⇒ RingBuffer

Returns a new instance of RingBuffer.



6
7
8
9
# File 'lib/nerve/ring_buffer.rb', line 6

def initialize( size )
  @ring_size = size.to_i
  super( @ring_size )
end

Instance Method Details

#[](offset = 0) ⇒ Object

Access elements in the RingBuffer

offset will be typically negative!



26
27
28
# File 'lib/nerve/ring_buffer.rb', line 26

def []( offset = 0 )
  return self.array_element( - 1 + offset )
end

#array_elementObject



4
# File 'lib/nerve/ring_buffer.rb', line 4

alias_method :array_element, :[]

#array_pushObject



3
# File 'lib/nerve/ring_buffer.rb', line 3

alias_method :array_push, :push

#averageObject



11
12
13
# File 'lib/nerve/ring_buffer.rb', line 11

def average
  self.inject(0.0) { |sum, el| sum + el } / self.size
end

#push(element) ⇒ Object



15
16
17
18
19
20
# File 'lib/nerve/ring_buffer.rb', line 15

def push( element )
  if length == @ring_size
    shift # loose element
  end
  array_push element
end