1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/e2mmap1_0.rb
matz 3db12e8b23 Initial revision
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1998-01-16 12:13:05 +00:00

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