Class: Pong::Series
- Inherits:
-
Array
- Object
- Array
- Pong::Series
- Defined in:
- lib/pong.rb
Constant Summary collapse
- MAX =
only save an hour of pings
3600
Instance Method Summary collapse
- #[](i) ⇒ Object
- #[]=(i, val) ⇒ Object
-
#initialize(max = MAX) ⇒ Series
constructor
A new instance of Series.
- #last(n = MAX) ⇒ Object
- #mean(n = MAX) ⇒ Object
- #nil_percent(n = MAX) ⇒ Object
- #nils(n = MAX) ⇒ Object
- #num(n) ⇒ Object
- #squeeze ⇒ Object
- #sum(n = MAX) ⇒ Object
Constructor Details
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 |
#squeeze ⇒ Object
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 |