Class: ActiveFacts::CQL::Compiler::Ternary

Inherits:
Operation
  • Object
show all
Defined in:
lib/activefacts/cql/compiler/expression.rb

Instance Attribute Summary collapse

Attributes inherited from Operation

#binding, #certainty, #clause, #fact_type, #player, #role, #role_ref

Instance Method Summary collapse

Methods inherited from Operation

#bind, #conjunction, #identify_other_players, #identify_players_with_role_name, #is_equality_comparison, #is_naked_object_type, #leading_adjective, #literal, #match_existing_fact_type, #nested_clauses, #objectification_of, #objectified_as, #operands, #result_type_name, #result_value_type, #role_name, #side_effects, #trailing_adjective, #value_constraint

Constructor Details

#initialize(condition, true_value, false_value) ⇒ Ternary

Returns a new instance of Ternary.



544
545
546
547
548
# File 'lib/activefacts/cql/compiler/expression.rb', line 544

def initialize condition, true_value, false_value
  @condition = condition
  @true_value = true_value
  @false_value = false_value
end

Instance Attribute Details

#conditionObject

Returns the value of attribute condition.



543
544
545
# File 'lib/activefacts/cql/compiler/expression.rb', line 543

def condition
  @condition
end

#false_valueObject

Returns the value of attribute false_value.



543
544
545
# File 'lib/activefacts/cql/compiler/expression.rb', line 543

def false_value
  @false_value
end

#true_valueObject

Returns the value of attribute true_value.



543
544
545
# File 'lib/activefacts/cql/compiler/expression.rb', line 543

def true_value
  @true_value
end

Instance Method Details

#compile(context) ⇒ Object



571
572
573
574
575
576
577
578
579
# File 'lib/activefacts/cql/compiler/expression.rb', line 571

def compile(context)
  op1 = @condition.compile(context)
  op2 = @true_value.compile(context)
  op3 = @false_value.compile(context)
  context.vocabulary.constellation.Expression(
      :new, :expression_type => 'Ternary', :operator => operator,
      :first_operand_expression => op1, :second_operand_expression => op2, :third_operand_expression => op3
  )
end

#identify_player(context) ⇒ Object



558
559
560
561
562
563
# File 'lib/activefacts/cql/compiler/expression.rb', line 558

def identify_player context
  @player || begin
    v = context.vocabulary
    @player = @true_value.player
  end
end

#inspectObject



565
# File 'lib/activefacts/cql/compiler/expression.rb', line 565

def inspect; to_s; end

#operatorObject



554
555
556
# File 'lib/activefacts/cql/compiler/expression.rb', line 554

def operator
  '?'
end

#refsObject



550
551
552
# File 'lib/activefacts/cql/compiler/expression.rb', line 550

def refs
  [@condition, @true_value, @false_value]
end

#to_sObject



567
568
569
# File 'lib/activefacts/cql/compiler/expression.rb', line 567

def to_s
  "TERNARY(#{@condition.to_s}, #{@true_value.to_s}, #{@false_value.to_s})"
end