Module: ActiveFacts::CQL::FactTypes::ContractedClauses0

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

Instance Method Summary collapse

Instance Method Details

#astObject



1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
# File 'lib/activefacts/cql/parser/FactTypes.rb', line 1273

def ast
  asts = elements.map{ |r| r.ast }
  contracted_clauses = []
  qualifiers = []
  if asts[-1].is_a?(Array)        # A contraction (Array of [role, qualifiers, *clauses])
    contracted_clauses = asts.pop         # Pull off the contracted_clauses
    contracted_role = contracted_clauses.shift
    qualifiers = contracted_clauses.shift
    asts.push(contracted_role)  # And replace it by the role removed from the contracted_clauses
  end
  clause_ast = Compiler::Clause.new(asts, qualifiers)
  [clause_ast] + contracted_clauses
end