Class: Norikra::Query::ASTStreamEventNode

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

Constant Summary collapse

NON_ALIAS_NODES =

[“streamExpression”,

["eventFilterExpression",
  ["classIdentifier", ["escapableStr", "FraudWarningEvent"]]],
".",
["viewExpression", "win", ":", "keepall", "(", ")"],
"AS",
"fraud"],

[“regularJoin”,

",",
["streamExpression",
  ["eventFilterExpression",
    ["classIdentifier", ["escapableStr", "PINChangeEvent"]],
    "(",
    ["expressionList",
      ["expression", EXPRESSION...]],
    ")"],
  ".",
  ["viewExpression",
    "win",
    ":",
    "time",
    "(",
    ["expressionWithTimeList",
      ["expressionWithTimeInclLast",
        ["expressionWithTime",
          ["timePeriod",
            ["secondPart", ["numberconstant", ["number", "20"]], "sec"]]]]],
    ")"]]]],
['eventFilterExpression','viewExpression','.','unidirectional','retain-union','retain-intersection']

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



1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
# File 'lib/norikra/query/ast.rb', line 1415

def aliases
  alias_nodes = children.select{|n| not NON_ALIAS_NODES.include?(n.name) }
  if alias_nodes.size == 2
    if alias_nodes[0].name =~ /^as$/i
      [ [ alias_nodes[1].name, self.targets.first ] ]
    else
      raise "unexpected FROM clause (non-AS for alias pattern): #{alias_nodes.map(&:name).join(',')}"
    end
  elsif alias_nodes.size == 0
    []
  else # 1 or 3 or more
    raise "unexpected FROM clause (non-AS for alias pattern): #{alias_nodes.map(&:name).join(',')}"
  end
end

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



1430
1431
1432
1433
# File 'lib/norikra/query/ast.rb', line 1430

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

#targetsObject



1411
1412
1413
# File 'lib/norikra/query/ast.rb', line 1411

def targets
  [ self.find('eventFilterExpression').find('classIdentifier').find('escapableStr').child.name ]
end