Class: ActiveFacts::CQL::Compiler::ClauseMatchSideEffects
- Inherits:
-
Object
- Object
- ActiveFacts::CQL::Compiler::ClauseMatchSideEffects
- Defined in:
- lib/activefacts/cql/compiler/clause.rb
Instance Attribute Summary collapse
-
#fact_type ⇒ Object
readonly
Returns the value of attribute fact_type.
-
#negated ⇒ Object
readonly
Returns the value of attribute negated.
-
#optional ⇒ Object
readonly
Returns the value of attribute optional.
-
#residual_adjectives ⇒ Object
readonly
Returns the value of attribute residual_adjectives.
-
#role_side_effects ⇒ Object
readonly
One array of values per Reference matched, in order.
Instance Method Summary collapse
- #apply_all(&b) ⇒ Object
- #cost ⇒ Object
- #describe ⇒ Object
-
#initialize(fact_type, clause, residual_adjectives, role_side_effects, negated = false) ⇒ ClauseMatchSideEffects
constructor
A new instance of ClauseMatchSideEffects.
- #inspect ⇒ Object
Constructor Details
#initialize(fact_type, clause, residual_adjectives, role_side_effects, negated = false) ⇒ ClauseMatchSideEffects
Returns a new instance of ClauseMatchSideEffects.
788 789 790 791 792 793 794 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 788 def initialize fact_type, clause, residual_adjectives, role_side_effects, negated = false @fact_type = fact_type @clause = clause @residual_adjectives = residual_adjectives @role_side_effects = role_side_effects @negated = negated end |
Instance Attribute Details
#fact_type ⇒ Object (readonly)
Returns the value of attribute fact_type.
783 784 785 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 783 def fact_type @fact_type end |
#negated ⇒ Object (readonly)
Returns the value of attribute negated.
785 786 787 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 785 def negated @negated end |
#optional ⇒ Object (readonly)
Returns the value of attribute optional.
786 787 788 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 786 def optional @optional end |
#residual_adjectives ⇒ Object (readonly)
Returns the value of attribute residual_adjectives.
782 783 784 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 782 def residual_adjectives @residual_adjectives end |
#role_side_effects ⇒ Object (readonly)
One array of values per Reference matched, in order
784 785 786 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 784 def role_side_effects @role_side_effects end |
Instance Method Details
#apply_all(&b) ⇒ Object
804 805 806 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 804 def apply_all &b @role_side_effects.reverse.each{ |role_side_effect| b.call(*role_side_effect) } end |
#cost ⇒ Object
808 809 810 811 812 813 814 815 816 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 808 def cost c = 0 @role_side_effects.each do |side_effect| c += side_effect.cost end c += 1 if @residual_adjectives c += 2 if @negated c end |
#describe ⇒ Object
818 819 820 821 822 823 824 825 826 827 828 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 818 def describe actual_effects = @role_side_effects.map do |side_effect| ( [side_effect.common_supertype ? "supertype step over #{side_effect.common_supertype.name}" : nil] + [side_effect.absorbed_precursors > 0 ? "absorbs #{side_effect.absorbed_precursors} preceding words" : nil] + [side_effect.absorbed_followers > 0 ? "absorbs #{side_effect.absorbed_followers} following words" : nil] + [@negated ? 'implicitly negated' : nil] ) end.flatten.compact*',' actual_effects.empty? ? "no side effects" : actual_effects end |
#inspect ⇒ Object
796 797 798 799 800 801 802 |
# File 'lib/activefacts/cql/compiler/clause.rb', line 796 def inspect 'side-effects are [' + @role_side_effects.map{|r| r.to_s}*', ' + ']' + "#{@negated ? ' negated' : ''}" + "#{@residual_adjectives ? ' with residual adjectives' : ''}" end |