Module: ActiveFacts::CQL::ValueTypes::UnitDefinition7

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

Instance Method Summary collapse

Instance Method Details

#astObject



1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
# File 'lib/activefacts/cql/parser/ValueTypes.rb', line 1329

def ast
  singular = u.singular.text_value
  plural = u.plural.text_value.empty? ? nil : u.plural.p.text_value 
  if u.coeff.empty?
    raise "Unit definition requires either a coefficient or an ephemera URL" unless q.respond_to?(:ephemera)
    numerator,denominator = 1, 1
  else
    numerator, denominator = *u.coeff.ast
  end
  offset = u.o.text_value.empty? ? 0 : u.o.value
  bases = u.base.empty? ? [] : u.base.value
  approximately = q.respond_to?(:approximately) || u.conversion.approximate?
  ephemera = q.respond_to?(:ephemera) ? q.url.text_value : nil
  Compiler::Unit.new singular, plural, numerator, denominator, offset, bases, approximately, ephemera
end