Class: InOrder::Queue
- Inherits:
-
Object
- Object
- InOrder::Queue
- Includes:
- Aux::VarKeys
- Defined in:
- app/models/in_order/queue.rb
Direct Known Subclasses
Instance Method Summary collapse
- #call ⇒ Object (also: #leave, #take)
- #join(record, max = nil) ⇒ Object (also: #add)
- #peek ⇒ Object
- #size ⇒ Object
- #trim(max, take_last = is_queue?) ) ⇒ Object
Methods included from Aux::VarKeys
Instance Method Details
#call ⇒ Object 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 |
#peek ⇒ Object
18 19 20 |
# File 'app/models/in_order/queue.rb', line 18 def peek last_element&.subject end |
#size ⇒ Object
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 |