Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. # frozen_string_literal: true
  2.  
  3. # :nodoc:
  4. class ActiveBusiness
  5. attr_reader :resolver
  6. def initialize
  7. @resolver = ActiveBusiness::Resolver.new
  8. yield resolver
  9. end
  10.  
  11. def resolve_to(action)
  12. @resolver.responses.fetch(action) { fail("#{action} not implemented") }
  13. end
  14.  
  15. # ActiveBusiness response resolver
  16. class Resolver
  17. attr_reader :responses
  18.  
  19. def initialize
  20. @responses = {}
  21. end
  22.  
  23. def sucess(&block)
  24. fail 'Response must receive a block!' unless block_given?
  25.  
  26. @responses[:sucess] = block
  27. end
  28.  
  29. def error(&block)
  30. fail 'Response must receive a block!' unless block_given?
  31.  
  32. @responses[:error] = block
  33. end
  34.  
  35. def method_missing(name, *_args, &block)
  36. # In case success and error not being enough
  37. fail 'Response must receive a block!' unless block_given?
  38.  
  39. @responses[name] = block
  40. end
  41. end
  42. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement