Keeps track of what elements are in the queue in priority and also ensures that when one element engulfs/covers/eats another that the larger element evicts the smaller element
Class Methods
::
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 9
def initialize
@queue = PriorityQueue.new
end
No documentation available
Instance Methods
#
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 17
def empty?
@queue.empty?
end
No documentation available
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 41
def flush_deleted
while @queue&.peek&.deleted?
@queue.pop
end
end
No documentation available
#
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 21
def length
@queue.length
end
No documentation available
#
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 25
def peek
@queue.peek
end
No documentation available
#
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 29
def pop
@queue.pop
end
No documentation available
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 47
def prune_engulf(block)
# If we're about to pop off the same block, we can skip deleting
# things from the frontier this iteration since we'll get it
# on the next iteration
return if @queue.peek && (block <=> @queue.peek) == 1
if block.starts_at != block.ends_at # A block of size 1 cannot engulf another
@queue.to_a.each { |b|
if b.starts_at >= block.starts_at && b.ends_at <= block.ends_at
b.delete
true
end
}
end
end
No documentation available
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 33
def push(block)
prune_engulf(block)
@queue << block
flush_deleted
self
end
No documentation available
#
lib/syntax_suggest/priority_engulf_queue.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/priority_engulf_queue.rb, line 13
def to_a
@queue.to_a
end
No documentation available