Class: InOrder::Queue

Inherits:
Object
  • Object
show all
Includes:
Aux::VarKeys
Defined in:
app/models/in_order/queue.rb

Direct Known Subclasses

Stack

Instance Method Summary collapse

Methods included from Aux::VarKeys

included, #initialize

Instance Method Details

#callObject Also known as: leave, take



12
13
14
# File 'app/models/in_order/queue.rb', line 12

def call
  remove_element
end

#join(record, max = nil) ⇒ Object Also known as: add



7
8
9
# File 'app/models/in_order/queue.rb', line 7

def join(record, max=nil)
  adder.prepend(record).tap { trim(max) if max }
end

#peekObject



18
19
20
# File 'app/models/in_order/queue.rb', line 18

def peek
  last_element&.subject
end

#sizeObject



34
35
36
# File 'app/models/in_order/queue.rb', line 34

def size
  InOrder::Element.by_keys(keys).count
end

#trim(max, take_last = is_queue?) ) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'app/models/in_order/queue.rb', line 22

def trim(max, take_last=is_queue?)
  if size > max
    if take_last
      remove_element
    else
      remove_element { first_element }
    end

    trim max, take_last
  end
end