Module: WorkflowTemplate::Adapters::State::DryMonads::ClassMethods

Includes:
State::Adapter::Abstract::ClassMethods
Defined in:
lib/workflow_template/adapters/state/dry_monads.rb

Instance Method Summary collapse

Instance Method Details

#canonical?(wrapped_state) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 21

def canonical?(wrapped_state)
  wrapped_state.is_a? Dry::Monads::Result
end

#error?(wrapped_state) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 25

def error?(wrapped_state)
  wrapped_state.failure?
end

#flat_map_unwrappable_state(wrapped_state, &block) ⇒ Object



53
54
55
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 53

def flat_map_unwrappable_state(wrapped_state, &block)
  wrapped_state.bind(&block)
end

#map_unwrappable_state(wrapped_state, &block) ⇒ Object



49
50
51
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 49

def map_unwrappable_state(wrapped_state, &block)
  wrapped_state.fmap(&block)
end

#run_handler!(state, _binding, &block) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 57

def run_handler!(state, _binding, &block)
  if state.error?
    state.wrapped_state.or { Handler.instance_exec(state.error, &block) }
  else
    state.wrapped_state.bind { Handler.instance_exec(**state.bare_state, &block) }
  end
end

#unwrap_error(wrapped_state) ⇒ Object



43
44
45
46
47
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 43

def unwrap_error(wrapped_state)
  raise Fatal::InconsistentState, "Expected Failure, got #{wrapped_state}" unless wrapped_state.failure?

  wrapped_state.failure
end

#unwrap_success(wrapped_state) ⇒ Object



33
34
35
36
37
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 33

def unwrap_success(wrapped_state)
  raise Fatal::InconsistentState, "Expected Success, got #{wrapped_state}" unless wrapped_state.success?

  wrapped_state.success
end

#wrap_error_with_bare_state(error, _bare_state) ⇒ Object



39
40
41
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 39

def wrap_error_with_bare_state(error, _bare_state)
  Dry::Monads::Failure(error)
end

#wrap_success(bare_state) ⇒ Object



29
30
31
# File 'lib/workflow_template/adapters/state/dry_monads.rb', line 29

def wrap_success(bare_state)
  Dry::Monads::Success(bare_state)
end