Class: KBS::BetaMemory
- Inherits:
-
Object
- Object
- KBS::BetaMemory
- Defined in:
- lib/kbs/beta_memory.rb
Instance Attribute Summary collapse
-
#linked ⇒ Object
readonly
Returns the value of attribute linked.
-
#successors ⇒ Object
Returns the value of attribute successors.
-
#tokens ⇒ Object
Returns the value of attribute tokens.
Instance Method Summary collapse
- #activate(token) ⇒ Object
- #add_token(token) ⇒ Object
- #deactivate(token) ⇒ Object
-
#initialize ⇒ BetaMemory
constructor
A new instance of BetaMemory.
- #relink! ⇒ Object
- #remove_token(token) ⇒ Object
- #unlink! ⇒ Object
Constructor Details
#initialize ⇒ BetaMemory
Returns a new instance of BetaMemory.
8 9 10 11 12 |
# File 'lib/kbs/beta_memory.rb', line 8 def initialize @tokens = [] @successors = [] @linked = true end |
Instance Attribute Details
#linked ⇒ Object (readonly)
Returns the value of attribute linked.
6 7 8 |
# File 'lib/kbs/beta_memory.rb', line 6 def linked @linked end |
#successors ⇒ Object
Returns the value of attribute successors.
5 6 7 |
# File 'lib/kbs/beta_memory.rb', line 5 def successors @successors end |
#tokens ⇒ Object
Returns the value of attribute tokens.
5 6 7 |
# File 'lib/kbs/beta_memory.rb', line 5 def tokens @tokens end |
Instance Method Details
#activate(token) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/kbs/beta_memory.rb', line 24 def activate(token) add_token(token) @successors.each do |s| if s.respond_to?(:left_activate) s.left_activate(token) elsif s.respond_to?(:activate) s.activate(token) end end end |
#add_token(token) ⇒ Object
46 47 48 49 50 |
# File 'lib/kbs/beta_memory.rb', line 46 def add_token(token) @tokens << token unlink! if @tokens.empty? relink! if @tokens.size == 1 end |
#deactivate(token) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/kbs/beta_memory.rb', line 35 def deactivate(token) remove_token(token) @successors.each do |s| if s.respond_to?(:left_deactivate) s.left_deactivate(token) elsif s.respond_to?(:deactivate) s.deactivate(token) end end end |
#relink! ⇒ Object
19 20 21 22 |
# File 'lib/kbs/beta_memory.rb', line 19 def relink! @linked = true @successors.each { |s| s.left_relink! if s.respond_to?(:left_relink!) } end |
#remove_token(token) ⇒ Object
52 53 54 55 |
# File 'lib/kbs/beta_memory.rb', line 52 def remove_token(token) @tokens.delete(token) unlink! if @tokens.empty? end |
#unlink! ⇒ Object
14 15 16 17 |
# File 'lib/kbs/beta_memory.rb', line 14 def unlink! @linked = false @successors.each { |s| s.left_unlink! if s.respond_to?(:left_unlink!) } end |