Class: KBS::BetaMemory

Inherits:
Object
  • Object
show all
Defined in:
lib/kbs/beta_memory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBetaMemory

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

#linkedObject (readonly)

Returns the value of attribute linked.



6
7
8
# File 'lib/kbs/beta_memory.rb', line 6

def linked
  @linked
end

#successorsObject

Returns the value of attribute successors.



5
6
7
# File 'lib/kbs/beta_memory.rb', line 5

def successors
  @successors
end

#tokensObject

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