Support for the Ruby 2.4 series has ended. See here for reference.
Helper module for easily defining exceptions with predefined messages.
1.
class Foo extend Exception2MessageMapper def_e2message ExistingExceptionClass, "message..." def_exception :NewExceptionClass, "message..."[, superclass] ... end
2.
module Error extend Exception2MessageMapper def_e2message ExistingExceptionClass, "message..." def_exception :NewExceptionClass, "message..."[, superclass] ... end class Foo include Error ... end foo = Foo.new foo.Fail ....
3.
module Error extend Exception2MessageMapper def_e2message ExistingExceptionClass, "message..." def_exception :NewExceptionClass, "message..."[, superclass] ... end class Foo extend Exception2MessageMapper include Error ... end Foo.Fail NewExceptionClass, arg... Foo.Fail ExistingExceptionClass, arg...
Fail(err, *rest)
err: exception rest: message arguments
# File e2mmap.rb, line 85
def Raise(err = nil, *rest)
E2MM.Raise(self, err, *rest)
end
# File e2mmap.rb, line 64
def bind(cl)
self.module_eval "#{<<-"begin;"}\n#{<<-"end;"}", __FILE__, __LINE__+1
begin;
def Raise(err = nil, *rest)
Exception2MessageMapper.Raise(self.class, err, *rest)
end
alias Fail Raise
class << self
undef included
end
def self.included(mod)
mod.extend Exception2MessageMapper
end
end;
end
def_e2message(c, m)
c: exception
m: message_form
define exception c with message m.
# File e2mmap.rb, line 96
def def_e2message(c, m)
E2MM.def_e2message(self, c, m)
end
def_exception(n, m, s)
n: exception_name
m: message_form
s: superclass(default: StandardError)
define exception named ``c'' with message m.
# File e2mmap.rb, line 106
def def_exception(n, m, s = StandardError)
E2MM.def_exception(self, n, m, s)
end