Class: Literal::Result::Generic

Inherits:
Object
  • Object
show all
Includes:
Type
Defined in:
lib/literal/result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Type

#<=, #>=

Constructor Details

#initialize(success_type, failure_type) ⇒ Generic

Returns a new instance of Generic.



32
33
34
35
36
37
# File 'lib/literal/result.rb', line 32

def initialize(success_type, failure_type)
  @success_type = success_type
  @failure_type = failure_type

  freeze
end

Instance Attribute Details

#failure_typeObject (readonly)

Returns the value of attribute failure_type.



39
40
41
# File 'lib/literal/result.rb', line 39

def failure_type
  @failure_type
end

#success_typeObject (readonly)

Returns the value of attribute success_type.



39
40
41
# File 'lib/literal/result.rb', line 39

def success_type
  @success_type
end

Instance Method Details

#===(object) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/literal/result.rb', line 41

def ===(object)
  case object
  when Literal::Success
    @success_type === object.value!
  when Literal::Failure
    @failure_type === object.error!
  end
end

#failure(error) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/literal/result.rb', line 58

def failure(error)
  Literal::Failure.new(
    error,
    success_type: @success_type,
    failure_type: @failure_type
  )
end

#success(value) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/literal/result.rb', line 50

def success(value)
  Literal::Success.new(
    value,
    success_type: @success_type,
    failure_type: @failure_type
  )
end