Sha256: 0b4463cee6e91c53fca163f1de34252ea0bf9f6a54d67bb5fef880b5572ede61

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

module Finitio
  #
  # The MultiRelation type generator allows capturing sets of information
  # facts, but allowing optional attributes. E. g.,
  #
  #     ColoredPoints = {{ point: Point, color :? Color }}
  #
  # This class allows capturing those types, in a way similar to
  # MultiTupleType:
  #
  #     ColoredPoints = MultiRelationType.new( Heading[...] )
  #
  # A ruby Set is used as concrete representation, and will contain hashes
  # that are valid representations of the associated multi tuple type:
  #
  #     R(ColoredPoints) = Set[ R({...}) ] = Set[Hash[...]]
  #
  # Accordingly, the dress transformation function has the signature below.
  # It expects an Enumerable as input and fails if any duplicate is found
  # (after tuple transformation), or if any tuple fails at being transformed.
  #
  #     dress :: Alpha  -> ColoredPoints   throws TypeError
  #     dress :: Object -> Set[Hash[...]]  throws TypeError
  #
  class MultiRelationType < Type
    include HeadingBasedType
    include RelBasedType

    def default_name
      "{{#{heading.to_name}}}"
    end

  end # class MultiRelationType
end # module Finitio

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
finitio-0.7.0 lib/finitio/type/multi_relation_type.rb
finitio-0.7.0.pre.rc4 lib/finitio/type/multi_relation_type.rb
finitio-0.7.0.pre.rc3 lib/finitio/type/multi_relation_type.rb
finitio-0.7.0.pre.rc2 lib/finitio/type/multi_relation_type.rb
finitio-0.7.0.pre.rc1 lib/finitio/type/multi_relation_type.rb
finitio-0.6.1 lib/finitio/type/multi_relation_type.rb
finitio-0.6.0 lib/finitio/type/multi_relation_type.rb
finitio-0.5.2 lib/finitio/type/multi_relation_type.rb
finitio-0.5.1 lib/finitio/type/multi_relation_type.rb
finitio-0.5.0 lib/finitio/type/multi_relation_type.rb