Sha256: a89a29cf52e1d819b977497eef785283f472d1c9ee4061d8f6bbee79cd570332
Contents?: true
Size: 1.74 KB
Versions: 10
Compression:
Stored size: 1.74 KB
Contents
module Dry module Protocol class NotImplemented < StandardError attr_reader :proto, :details def initialize(type, proto, **details) @proto, @details = proto, details @details[:message] = case type when :protocol "Protocol “#{@proto}” is not implemented for “#{@details[:receiver].class}”." when :method "Protocol “#{@proto}” does not declare method “#{@details[:method]}”." when :nested "Protocol “#{@proto}” failed to invoke the implementation for\n" \ " ⮩ “#{@details[:receiver].class}##{@details[:method]}”.\n" \ " ⮩ Caused by “#{cause.class}” with a message\n" \ " ⮩ “#{cause.message}”\n" \ " ⮩ Rescue this exception and inspect `NotImplemented#cause' for details." when :arity "Attempt to implement “#{@proto}#@details[:method]}”\n" \ " ⮩ with a wrong arity for “#{@details[:target]}”.\n" \ " ⮩ Expected parameters types:\n" \ " ⮩ “#{@details[:expected]}”\n" \ " ⮩ Provided parameters types:\n" \ " ⮩ “#{@details[:provided]}”\n" \ " ⮩ Please consider providing a proper implementation." else "Protocol “#{proto}” is invalid." end super(@details[:message]) if @details[:cause] set_backtrace( @details[:cause].backtrace.reject do |line| # FIXME drop_while ?? line =~ %r[dry-behaviour/lib/dry/behaviour] end ) end end def cause @details[:cause] ||= super end end end end
Version data entries
10 entries across 10 versions & 1 rubygems