Class: Prolly::Ps::Storage::Rubylist

Inherits:
Base
  • Object
show all
Defined in:
lib/prolly/ps/storage/rubylist.rb

Instance Method Summary collapse

Methods inherited from Base

#import

Constructor Details

#initializeRubylist

Returns a new instance of Rubylist.



9
10
11
# File 'lib/prolly/ps/storage/rubylist.rb', line 9

def initialize
  super
end

Instance Method Details

#add(datum) ⇒ Object



19
20
21
# File 'lib/prolly/ps/storage/rubylist.rb', line 19

def add(datum)
  @data << datum
end

#count(rvs, options = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/prolly/ps/storage/rubylist.rb', line 23

def count(rvs, options = {})
  reload = options[:reload] || false
  if rvs.kind_of?(Array)
    value = @data.count { |e| rvs.all? { |rv| e.has_key?(rv) } }
  elsif rvs.kind_of?(Hash)
    value = @data.count { |e|
      rvs.map { |rkey, rval|
        vals = rval.kind_of?(Array) ? rval : [rval]
        vals.include?(e[rkey])
      }.all?
    }
  end
  return value
end

#rand_varsObject



38
39
40
# File 'lib/prolly/ps/storage/rubylist.rb', line 38

def rand_vars
  @data.first.keys
end

#resetObject



13
14
15
16
17
# File 'lib/prolly/ps/storage/rubylist.rb', line 13

def reset
  super
  @data = []
  @uniq_vals = {}
end

#uniq_vals(name) ⇒ Object



42
43
44
# File 'lib/prolly/ps/storage/rubylist.rb', line 42

def uniq_vals(name)
  @uniq_vals[name] ||= @data.map { |li| li.has_key?(name) ? li[name] : nil }.uniq
end