Class: Exfuz::Candidates

Inherits:
Object
  • Object
show all
Defined in:
lib/exfuz/candidates.rb

Constant Summary collapse

@@queue =
Queue.new
@@raw =
[]

Instance Method Summary collapse

Constructor Details

#initialize(items = []) ⇒ Candidates

Returns a new instance of Candidates.



8
9
10
# File 'lib/exfuz/candidates.rb', line 8

def initialize(items = [])
  @processed = items
end

Instance Method Details

#close_pushObject



24
25
26
27
# File 'lib/exfuz/candidates.rb', line 24

def close_push
  @@queue << nil
  @@queue.close
end

#close_push?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/exfuz/candidates.rb', line 20

def close_push?
  @@queue.closed?
end

#filter(conditions) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/exfuz/candidates.rb', line 33

def filter(conditions)
  pipeline
  filtered = positions.filter do |position|
    position.match?(conditions)
  end
  Exfuz::Candidates.new(filtered)
end

#group_by(keys) ⇒ Object



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

def group_by(keys)
  pipeline
  Exfuz::Group.new(positions, keys)
end

#positionsObject



29
30
31
# File 'lib/exfuz/candidates.rb', line 29

def positions
  @processed.empty? ? @@raw : @processed
end

#push(item) ⇒ Object



12
13
14
# File 'lib/exfuz/candidates.rb', line 12

def push(item)
  @@queue << item
end

#suspend_pushObject



16
17
18
# File 'lib/exfuz/candidates.rb', line 16

def suspend_push
  @@queue << nil
end