Sha256: c2f1af19c8ce6e3a6ead85f3cd332037c243d4ee778f2552f95baf81f39e3485
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
module Veritas class Relation module Operation # A mixin for Binary relations module Binary include Veritas::Operation::Binary # Hook called when module is included # # @param [Module] descendant # the module or class including Binary # # @return [self] # # @api private def self.included(descendant) descendant.extend ClassMethods self end # Initialize a Binary relation # # @param [Relation] left # @param [Relation] right # # @return [undefined] # # @api private def initialize(left, right) super @header = left.header | right.header @directions = Relation::Operation::Order::DirectionSet::EMPTY end module ClassMethods # Instantiate a new Binary relation # # @example # binary = BinaryRelation.new(left, right) # # @param [Relation] left # @param [Relation] right # # @return [Binary] # # @api public def new(left, right) assert_ordered_match(left, right) super end private # Assert that ordered and unordered relations are not mixed # # @param [Relation] left # @param [Relation] right # # @return [undefined] # # @raise [RelationMismatchError] # raised if one relation is ordered and the other is not # # @api private def assert_ordered_match(left, right) if left.directions.empty? != right.directions.empty? raise RelationMismatchError, 'both relations must be ordered or neither may be ordered' end end end # module ClassMethods end # module Binary end # module Operation end # class Relation end # module Veritas
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
veritas-0.0.3 | lib/veritas/relation/operation/binary.rb |
veritas-0.0.2 | lib/veritas/relation/operation/binary.rb |