Class: Norikra::Query::ASTStreamPatternNode

Inherits:
ASTStreamNode show all
Defined in:
lib/norikra/query/ast.rb

Instance Attribute Summary

Attributes inherited from ASTNode

#children, #name, #tree

Instance Method Summary collapse

Methods inherited from ASTStreamNode

generate, #nodetype?

Methods inherited from ASTNode

#chain, #child, #find, #has_a?, #initialize, #listup, #nodetype?, #to_a

Constructor Details

This class inherits a constructor from Norikra::Query::ASTNode

Instance Method Details

#aliasesObject



1488
1489
1490
# File 'lib/norikra/query/ast.rb', line 1488

def aliases
  self.listup(:pattern).map{|p| [ p.alias, p.target ] }
end

#fields(default_target = nil, known_targets_aliases = []) ⇒ Object



1492
1493
1494
# File 'lib/norikra/query/ast.rb', line 1492

def fields(default_target=nil, known_targets_aliases=[])
  self.listup(:pattern).map{|p| p.fields(default_target, known_targets_aliases) }.reduce(&:+) || []
end

#targetsObject

MEMO: Pattern itself can have alias name, but it makes no sense. So we ignore it. ('x' is ignored): pattern [... ] AS x

pattern ( ex: FROM pattern[ every a=events1 -> b=Events1(name=a.name, type='T') where timer:within(1 min) ].win:time(2 hour) )

["streamExpression", ["patternInclusionExpression", "pattern", "[", ["patternExpression", ["followedByExpression", ["orExpression", ["andExpression", ["matchUntilExpression", ["qualifyExpression", "every", ["guardPostFix", ["atomicExpression", ["patternFilterExpression", "a", "=", ["classIdentifier", ["escapableStr", "EventA"]]]]]]]]], ["followedByRepeat", "->", ["orExpression", ["andExpression", ["matchUntilExpression", ["qualifyExpression", ["guardPostFix", ["atomicExpression", ["patternFilterExpression", "b", "=", ["classIdentifier", ["escapableStr", "EventA"]], "(", ["expressionList", ["expression", EXPRESSION...], ",", ["expression", EXPRESSION...]], ")"], "WHERE", ["guardWhereExpression", "timer", ":", "within", "(", ["expressionWithTimeList", ["expressionWithTimeInclLast", ["expressionWithTime", ["timePeriod", ["minutePart", ["numberconstant", ["number", "1"]], "min"]]]]], ")"]]]]]]]]], "]"]], ".", ["viewExpression", "win", ":", "time", "(", ["expressionWithTimeList", ["expressionWithTimeInclLast", ["expressionWithTime", ["timePeriod", ["hourPart", ["numberconstant", ["number", "2"]], "hour"]]]]], ")"]],



1484
1485
1486
# File 'lib/norikra/query/ast.rb', line 1484

def targets
  self.listup(:pattern).map(&:target)
end