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