class TRecs::ClockTicker

Attributes

delayer[R]
from[R]
player[RW]
speed[R]
to[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/trecs/tickers/clock_ticker.rb, line 9
def initialize(options={})
  @delayer = options.fetch(:delayer) { Kernel }
  @timestamps = options.fetch(:timestamps) { nil }
  @from  = options.fetch(:from)  { nil }
  @to    = options.fetch(:to)    { nil }
  @speed = options.fetch(:speed) { 1 }
end

Public Instance Methods

inspect()
Alias for: to_s
start() click to toggle source
# File lib/trecs/tickers/clock_ticker.rb, line 17
def start
  prev_time = timestamps.first
  timestamps.each do |time|
    sleep(time - prev_time)
    player.tick(time)
    prev_time = time
  end
  true
end
timestamps() click to toggle source
# File lib/trecs/tickers/clock_ticker.rb, line 27
def timestamps
  @timestamps ||= player.timestamps
  if from
    @timestamps = @timestamps.select { |t| t > from }
    @timestamps.unshift(from)
  end
  if to && to > 0
    @timestamps = @timestamps.select { |t| t < to }
    @timestamps.push(to)
  end
  @timestamps
end
to_s() click to toggle source
# File lib/trecs/tickers/clock_ticker.rb, line 40
def to_s
  "<#{self.class}>"
end
Also aliased as: inspect

Private Instance Methods

sleep(time) click to toggle source
# File lib/trecs/tickers/clock_ticker.rb, line 47
def sleep(time)
  sleep_time =  time / (1000.0 * speed)
  delayer.sleep(sleep_time)
end