Class: ActiveFacts::Metamodel::Fact

Inherits:
Object
  • Object
show all
Defined in:
lib/activefacts/vocabulary/metamodel.rb,
lib/activefacts/vocabulary/extensions.rb

Instance Method Summary collapse

Instance Method Details

#verbalise(context = nil) ⇒ Object



775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
# File 'lib/activefacts/vocabulary/extensions.rb', line 775

def verbalise(context = nil)
  reading = fact_type.preferred_reading
  reading_roles = reading.role_sequence.all_role_ref.sort_by{|rr| rr.ordinal}.map{|rr| rr.role }
  role_values_in_reading_order = all_role_value.sort_by{|rv| reading_roles.index(rv.role) }
  instance_verbalisations = role_values_in_reading_order.map do |rv|
    if rv.instance.value
      v = rv.instance.verbalise
    else
      if (c = rv.instance.concept).is_a?(EntityType)
        if !c.preferred_identifier.role_sequence.all_role_ref.detect{|rr| rr.role.fact_type == fact_type}
          v = rv.instance.verbalise
        end
      end
    end
    next nil unless v
    v.to_s.sub(/(#{rv.instance.concept.name}|\S*)\s/,'')
  end
  reading.expand([], false, instance_verbalisations)
end