Class: Pong::Series

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

Constant Summary collapse

MAX =

only save an hour of pings

3600

Instance Method Summary collapse

Constructor Details

#initialize(max = MAX) ⇒ Series

Returns a new instance of Series.



14
15
16
17
# File 'lib/pong.rb', line 14

def initialize(max = MAX)
  @max = max
  @offset = 0
end

Instance Method Details

#[](i) ⇒ Object



31
32
33
34
# File 'lib/pong.rb', line 31

def [](i)
  squeeze
  super(i-@offset)
end

#[]=(i, val) ⇒ Object



26
27
28
29
# File 'lib/pong.rb', line 26

def []=(i, val)
  squeeze
  super(i-@offset, val)
end

#last(n = MAX) ⇒ Object



41
42
43
44
# File 'lib/pong.rb', line 41

def last(n = MAX)
  num = num(n)
  self.slice(-num, num)
end

#mean(n = MAX) ⇒ Object



52
53
54
# File 'lib/pong.rb', line 52

def mean(n = MAX)
  size == 0 ? 0 : sum(n).to_f / num(n)
end

#nil_percent(n = MAX) ⇒ Object



60
61
62
# File 'lib/pong.rb', line 60

def nil_percent(n = MAX)
  (nils(n).to_f / num(n).to_f) * 100.0
end

#nils(n = MAX) ⇒ Object



56
57
58
# File 'lib/pong.rb', line 56

def nils(n = MAX)
  last(n).select{|value| value.nil? }.size
end

#num(n) ⇒ Object



36
37
38
39
# File 'lib/pong.rb', line 36

def num(n)
  n = @max if n.nil?
  [n, size].min
end

#squeezeObject



19
20
21
22
23
24
# File 'lib/pong.rb', line 19

def squeeze
  while size >= @max
    shift
    @offset += 1
  end
end

#sum(n = MAX) ⇒ Object



46
47
48
49
50
# File 'lib/pong.rb', line 46

def sum(n = MAX)
  last(n).inject(0){|memo, value|
    value.nil? ? memo : (memo + value)
  }
end