Class: Wongi::Engine::GeneratorTracker
- Inherits:
-
Object
- Object
- Wongi::Engine::GeneratorTracker
- Defined in:
- lib/wongi-engine/generator_tracker.rb
Instance Method Summary collapse
- #add(wme, token) ⇒ Object
- #for_token(token) ⇒ Object
- #for_wme(wme) ⇒ Object
-
#initialize ⇒ GeneratorTracker
constructor
A new instance of GeneratorTracker.
- #remove_token(token) ⇒ Object
Constructor Details
#initialize ⇒ GeneratorTracker
Returns a new instance of GeneratorTracker.
3 4 5 6 |
# File 'lib/wongi-engine/generator_tracker.rb', line 3 def initialize @by_wme = Hash.new { |h, k| h[k] = Set.new } @by_token = Hash.new { |h, k| h[k] = Set.new } end |
Instance Method Details
#add(wme, token) ⇒ Object
8 9 10 11 |
# File 'lib/wongi-engine/generator_tracker.rb', line 8 def add(wme, token) @by_wme[wme].add(token) @by_token[token.object_id].add(wme) end |
#for_token(token) ⇒ Object
17 18 19 |
# File 'lib/wongi-engine/generator_tracker.rb', line 17 def for_token(token) @by_token.has_key?(token.object_id) ? @by_token[token.object_id] : Set.new end |
#for_wme(wme) ⇒ Object
13 14 15 |
# File 'lib/wongi-engine/generator_tracker.rb', line 13 def for_wme(wme) @by_wme.has_key?(wme) ? @by_wme[wme] : Set.new end |
#remove_token(token) ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/wongi-engine/generator_tracker.rb', line 21 def remove_token(token) wmes = for_token(token) @by_token.delete(token.object_id) wmes.each do |wme| next unless @by_wme.key?(wme) @by_wme[wme].delete(token) @by_wme.delete(wme) if @by_wme[wme].empty? end end |