class Lifesaver::Notification::TraversalQueue
Attributes
queue[RW]
visited_models[RW]
Public Class Methods
new()
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 4 def initialize @visited_models = {} @queue = [] end
Public Instance Methods
<<(model)
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 19 def <<(model) push(model) end
empty?()
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 27 def empty? queue.empty? end
pop()
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 23 def pop queue.shift end
push(model)
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 13 def push(model) return if model_visited?(model) visit_model(model) queue << model end
size()
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 9 def size queue.size end
Private Instance Methods
model_key(model)
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 43 def model_key(model) "#{model.class.name}_#{model.id}" end
model_visited?(model)
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 39 def model_visited?(model) visited_models[model_key(model)] || false end
visit_model(model)
click to toggle source
# File lib/lifesaver/notification/traversal_queue.rb, line 35 def visit_model(model) visited_models[model_key(model)] = true end