Class: ActiveFacts::CQL::Compiler::ClauseMatchSideEffect

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

Overview

An instance of ClauseMatchSideEffects is created when the compiler matches an existing fact type. It captures the details that have to be adjusted for the match to be regarded a success.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(phrase, role_ref, num, absorbed_precursors, absorbed_followers, common_supertype, residual_adjectives) ⇒ ClauseMatchSideEffect

Returns a new instance of ClauseMatchSideEffect.



756
757
758
759
760
761
762
763
764
765
766
# File 'lib/activefacts/cql/compiler/clause.rb', line 756

def initialize phrase, role_ref, num, absorbed_precursors, absorbed_followers, common_supertype, residual_adjectives
  @phrase = phrase
  @role_ref = role_ref
  @num = num
  @absorbed_precursors = absorbed_precursors
  @absorbed_followers = absorbed_followers
  @common_supertype = common_supertype
  @residual_adjectives = residual_adjectives
  @cancelled_cost = 0
  debug :matching_fails, "Saving side effects for #{@phrase.term}, absorbs #{@absorbed_precursors}/#{@absorbed_followers}#{@common_supertype ? ', step over supertype '+ @common_supertype.name : ''}" if @absorbed_precursors+@absorbed_followers+(@common_supertype ? 1 : 0) > 0
end

Instance Attribute Details

#absorbed_followersObject (readonly)

Returns the value of attribute absorbed_followers.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def absorbed_followers
  @absorbed_followers
end

#absorbed_precursorsObject (readonly)

Returns the value of attribute absorbed_precursors.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def absorbed_precursors
  @absorbed_precursors
end

#common_supertypeObject (readonly)

Returns the value of attribute common_supertype.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def common_supertype
  @common_supertype
end

#numObject (readonly)

Returns the value of attribute num.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def num
  @num
end

#phraseObject (readonly)

Returns the value of attribute phrase.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def phrase
  @phrase
end

#residual_adjectivesObject (readonly)

Returns the value of attribute residual_adjectives.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def residual_adjectives
  @residual_adjectives
end

#role_refObject (readonly)

Returns the value of attribute role_ref.



754
755
756
# File 'lib/activefacts/cql/compiler/clause.rb', line 754

def role_ref
  @role_ref
end

Instance Method Details

#cancel_cost(c) ⇒ Object



772
773
774
# File 'lib/activefacts/cql/compiler/clause.rb', line 772

def cancel_cost c
  @cancelled_cost += c
end

#costObject



768
769
770
# File 'lib/activefacts/cql/compiler/clause.rb', line 768

def cost
  absorbed_precursors + absorbed_followers + (common_supertype ? 1 : 0) - @cancelled_cost
end

#to_sObject



776
777
778
# File 'lib/activefacts/cql/compiler/clause.rb', line 776

def to_s
  "#{@phrase.inspect} absorbs #{@absorbed_precursors||0}/#{@absorbed_followers||0} at #{@num}#{@common_supertype && ' super '+@common_supertype.name}#{@residual_adjectives ? ' with residual adjectives' : ''}"
end