mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
71 lines
1.2 KiB
Ruby
71 lines
1.2 KiB
Ruby
#
|
|
# e2mmap.rb -
|
|
# $Release Version: 1.0$
|
|
# $Revision$
|
|
# $Date$
|
|
# by Keiju ISHITSUKA
|
|
#
|
|
# --
|
|
#
|
|
#
|
|
|
|
module Exception2MessageMapper
|
|
RCS_ID='-$Header$-'
|
|
E2MM = Exception2MessageMapper
|
|
|
|
def E2MM.extend_to(b)
|
|
c = eval("self", b)
|
|
c.extend(self)
|
|
c.bind(b)
|
|
end
|
|
|
|
def bind(b)
|
|
eval "
|
|
@binding = binding
|
|
E2MM_ErrorMSG = Hash.new
|
|
|
|
# fail(err, *rest)
|
|
# err: 例外
|
|
# rest: メッセージに渡すパラメータ
|
|
#
|
|
def fail!(*rest)
|
|
super
|
|
end
|
|
|
|
def fail(err, *rest)
|
|
$! = err.new(sprintf(E2MM_ErrorMSG[err], *rest))
|
|
super()
|
|
end
|
|
|
|
public :fail
|
|
# def_exception(c, m)
|
|
# c: exception
|
|
# m: message_form
|
|
# 例外cのメッセージをmとする.
|
|
#
|
|
def def_e2message(c, m)
|
|
E2MM_ErrorMSG[c] = m
|
|
end
|
|
|
|
# def_exception(c, m)
|
|
# c: exception_name
|
|
# m: message_form
|
|
# s: 例外スーパークラス(デフォルト: Exception)
|
|
# 例外名``c''をもつ例外を定義し, そのメッセージをmとする.
|
|
#
|
|
def def_exception(c, m)
|
|
|
|
c = c.id2name if c.kind_of?(Fixnum)
|
|
eval \"class \#{c} < Exception
|
|
end
|
|
E2MM_ErrorMSG[\#{c}] = '\#{m}'
|
|
\", @binding
|
|
end
|
|
", b
|
|
|
|
end
|
|
|
|
E2MM.extend_to(binding)
|
|
def_exception("ErrNotClassOrModule", "Not Class or Module")
|
|
end
|
|
|