Sha256: 3dfb60edcdf65235fa5e9a8314e57fbfcad1498fd322e45121a5028cbaa44243

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

module Wongi::Engine

  class BetaMemory < BetaNode
    attr_reader :tokens

    def initialize parent
      super
      @tokens = []
    end

    def seed assignments = {}
      @seed = assignments
      t = Token.new( nil, nil, assignments )
      t.node = self
      @tokens << t
    end

    def subst valuations
      @tokens.first.delete

      token = Token.new( nil, nil, @seed )
      token.node = self
      @tokens << token

      valuations.each { |variable, value| token.subst variable, value }
      self.children.each do |child|
        child.beta_activate token
      end
    end

    def beta_activate token, wme, assignments
      # puts "MEMORY #{@id} left-activated with #{wme}"
      t = Token.new( token, wme, assignments)
      t.node = self
      @tokens << t
      self.children.each do |child|
        if child.kind_of? BetaMemory
          child.beta_activate t, nil, {}
        else
          child.beta_activate t
        end
      end
    end

    def refresh_child child
      tokens.each do |token|
        child.beta_activate token, nil, {}
      end
    end

    def delete_token token
      tokens.delete token
    end

    # => TODO: investigate if we really need this
    #def beta_memory
    #  self
    #end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wongi-engine-0.0.6 lib/wongi-engine/beta/beta_memory.rb
wongi-engine-0.0.5 lib/wongi-engine/beta/beta_memory.rb
wongi-engine-0.0.3 lib/wongi-engine/beta/beta_memory.rb