Class: Wongi::Engine::JoinResults
- Inherits:
-
Object
- Object
- Wongi::Engine::JoinResults
- Defined in:
- lib/wongi-engine/join_results.rb
Instance Method Summary collapse
- #add(jr) ⇒ Object
- #for(wme: nil, token: nil) ⇒ Object
- #has?(jr) ⇒ Boolean
- #hidden?(jr) ⇒ Boolean
- #hide(jr) ⇒ Object
-
#initialize ⇒ JoinResults
constructor
A new instance of JoinResults.
- #remove(jr) ⇒ Object
- #remove_token(token) ⇒ Object
- #remove_wme(wme) ⇒ Object
Constructor Details
#initialize ⇒ JoinResults
Returns a new instance of JoinResults.
6 7 8 9 10 |
# File 'lib/wongi-engine/join_results.rb', line 6 def initialize @by_wme = Hash.new { |h, k| h[k] = {} } @by_token = Hash.new { |h, k| h[k] = {} } @hidden = {} end |
Instance Method Details
#add(jr) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/wongi-engine/join_results.rb', line 30 def add(jr) if hidden.key?(jr) hidden.delete(jr) else by_wme[jr.wme][jr] = true by_token[jr.token.object_id][jr] = true end end |
#for(wme: nil, token: nil) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/wongi-engine/join_results.rb', line 12 def for(wme: nil, token: nil) if wme by_wme.key?(wme) ? by_wme[wme].keys : [] elsif token by_token.key?(token.object_id) ? by_token[token.object_id].keys : [] else [] end end |
#has?(jr) ⇒ Boolean
22 23 24 |
# File 'lib/wongi-engine/join_results.rb', line 22 def has?(jr) by_wme.key?(jr.wme) && by_wme[jr.wme].key?(jr) end |
#hidden?(jr) ⇒ Boolean
26 27 28 |
# File 'lib/wongi-engine/join_results.rb', line 26 def hidden?(jr) hidden.key?(jr) end |
#hide(jr) ⇒ Object
60 61 62 |
# File 'lib/wongi-engine/join_results.rb', line 60 def hide(jr) hidden[jr] = true end |
#remove(jr) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/wongi-engine/join_results.rb', line 39 def remove(jr) unless has?(jr) hide(jr) return end if by_wme.key?(jr.wme) by_wme[jr.wme].delete(jr) if by_wme[jr.wme].empty? by_wme.delete(jr.wme) end end if by_token.key?(jr.token.object_id) by_token[jr.token.object_id].delete(jr) if by_token[jr.token.object_id].empty? by_token.delete(jr.token.object_id) end end end |
#remove_token(token) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/wongi-engine/join_results.rb', line 64 def remove_token(token) return unless by_token.key?(token.object_id) by_token[token.object_id].keys.each do |jr| remove(jr) end end |
#remove_wme(wme) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/wongi-engine/join_results.rb', line 72 def remove_wme(wme) return unless by_wme.key?(wme) by_wme[wme].keys do |jr| remove(jr) end end |