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