Module: ActiveFacts::CQL::FactTypes::AnonymousFactType2

Defined in:
lib/activefacts/cql/parser/FactTypes.rb

Instance Method Summary collapse

Instance Method Details

#astObject



253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
# File 'lib/activefacts/cql/parser/FactTypes.rb', line 253

def ast
  clauses_ast = query_clauses.ast
  conditions = !ctail.empty? ? ctail.a.ast : []
  returning = respond_to?(:returning_clause) ? returning_clause.ast : nil
  value_derivation = clauses_ast.detect{|r| r.is_equality_comparison}
  if !value_derivation and
      conditions.empty? and
      clauses_ast.detect{|r| r.includes_literals}
    raise "Fact instances may not contain conditions" unless conditions.empty? && !returning
    Compiler::Fact.new clauses_ast
  elsif (clauses_ast.size == 1 &&
    clauses_ast[0].phrases.size == 1 &&
    (popname = clauses_ast[0].phrases[0]) &&
    !popname.is_a?(Compiler::Reference) &&
    conditions.detect{|r| r.includes_literals}
  )
    Compiler::Fact.new conditions, popname
  else
    Compiler::FactType.new nil, clauses_ast, conditions, returning
  end
end