Class: ActiveFacts::CQL::Compiler::LogicalOr
- Inherits:
-
Operation
- Object
- Operation
- ActiveFacts::CQL::Compiler::LogicalOr
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_value_type, #role_name, #side_effects, #trailing_adjective, #value_constraint
Constructor Details
#initialize(*factors) ⇒ LogicalOr
Returns a new instance of LogicalOr.
494
495
496
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 494
def initialize *factors
@factors = factors
end
|
Instance Attribute Details
#factors ⇒ Object
Returns the value of attribute factors.
493
494
495
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 493
def factors
@factors
end
|
Instance Method Details
#compile(context) ⇒ Object
523
524
525
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 523
def compile(context)
compile_factors(context, @factors)
end
|
#compile_factors(context, factors) ⇒ Object
527
528
529
530
531
532
533
534
535
536
537
538
539
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 527
def compile_factors(context, factors)
if factors.size == 1
factors[0].compile(context)
else
lhs = factors.shift
lhs_expr = lhs.compile(context)
rhs_expr = compile_factors(context, factors)
context.vocabulary.constellation.Expression(
:new, :expression_type => 'Binary', :operator => operator,
:first_operand_expression => lhs_expr, :second_operand_expression => rhs_expr
)
end
end
|
#identify_player(context) ⇒ Object
506
507
508
509
510
511
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 506
def identify_player context
@player || begin
v = context.vocabulary
@player = @factors[0].player
end
end
|
#inspect ⇒ Object
517
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 517
def inspect; to_s; end
|
#operator ⇒ Object
502
503
504
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 502
def operator
'or'
end
|
#refs ⇒ Object
498
499
500
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 498
def refs
@factors
end
|
#result_type_name(context) ⇒ Object
513
514
515
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 513
def result_type_name(context)
"DISJUNCTION_OF<#{ @factors.map{|f| f.player.name}*' ' }>"
end
|
#to_s ⇒ Object
519
520
521
|
# File 'lib/activefacts/cql/compiler/expression.rb', line 519
def to_s
'DISJUNCTION(' + @factors.map{|factor| "#{factor.to_s}" } * ' OR ' + ')'
end
|