Class: Camille::Types::Union

Inherits:
BasicType show all
Defined in:
lib/camille/types/union.rb

Instance Attribute Summary collapse

Attributes inherited from BasicType

#fingerprint

Instance Method Summary collapse

Methods inherited from BasicType

&, #&, #[], [], check_params, directly_instantiable?, inherited, instance, |, #|

Constructor Details

#initialize(left, right) ⇒ Union

Returns a new instance of Union.



6
7
8
9
10
# File 'lib/camille/types/union.rb', line 6

def initialize left, right
  @left = Camille::Type.instance left
  @right = Camille::Type.instance right
  @fingerprint = Digest::MD5.hexdigest "#{self.class.name}#{[@left.fingerprint, @right.fingerprint].sort}"
end

Instance Attribute Details

#leftObject (readonly)

Returns the value of attribute left.



4
5
6
# File 'lib/camille/types/union.rb', line 4

def left
  @left
end

#rightObject (readonly)

Returns the value of attribute right.



4
5
6
# File 'lib/camille/types/union.rb', line 4

def right
  @right
end

Instance Method Details

#check(value) ⇒ Object



12
13
14
# File 'lib/camille/types/union.rb', line 12

def check value
  check_with_method(value, :check)
end

#check_params(value) ⇒ Object



16
17
18
# File 'lib/camille/types/union.rb', line 16

def check_params value
  check_with_method(value, :check_params)
end

#literalObject



20
21
22
# File 'lib/camille/types/union.rb', line 20

def literal
  "(#{@left.literal} | #{@right.literal})"
end