Class: Wongi::Engine::AnySet

Inherits:
Object
  • Object
show all
Defined in:
lib/wongi-engine/beta/or_node.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(variants) ⇒ AnySet

Returns a new instance of AnySet.



6
7
8
# File 'lib/wongi-engine/beta/or_node.rb', line 6

def initialize variants
  @variants = variants
end

Instance Attribute Details

#variantsObject (readonly)

Returns the value of attribute variants.



5
6
7
# File 'lib/wongi-engine/beta/or_node.rb', line 5

def variants
  @variants
end

Instance Method Details

#compile(context) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/wongi-engine/beta/or_node.rb', line 10

def compile context
  added = []
  branches = variants.map do |variant|
    ctx = BetaNode::CompilationContext.new context.node, context.rete, context.earlier.dup, context.parameters, context.alpha_deaf
    members = context.earlier.size
    variant.compile ctx
    added += ctx.earlier[ (members - ctx.earlier.size) .. -1 ]  # newly added elements
    ctx.node
  end
  context.earlier += added
  context.node = OrNode.new( branches )
  context.node.update_above
  context
end