Class: Norikra::Query::ASTStreamEventNode
- Inherits:
-
ASTStreamNode
- Object
- ASTNode
- ASTStreamNode
- Norikra::Query::ASTStreamEventNode
- 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
Instance Method Summary collapse
- #aliases ⇒ Object
- #fields(default_target = nil, known_targets_aliases = []) ⇒ Object
- #targets ⇒ Object
Methods inherited from ASTStreamNode
Methods inherited from ASTNode
#child, #find, #initialize, #listup, #nodetype?, #to_a
Constructor Details
This class inherits a constructor from Norikra::Query::ASTNode
Instance Method Details
#aliases ⇒ Object
1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 |
# File 'lib/norikra/query/ast.rb', line 1185 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
1200 1201 1202 1203 |
# File 'lib/norikra/query/ast.rb', line 1200 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 |
#targets ⇒ Object
1181 1182 1183 |
# File 'lib/norikra/query/ast.rb', line 1181 def targets [ self.find('eventFilterExpression').find('classIdentifier').find('escapableStr').child.name ] end |