自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
December 15, 2003 [おもひで]
■ [Ruby-GNOME2] 正規表現でWarning
rbbrの要望をruby-talkで受けてふと思ったんだけど、以下のような不正な正規表現が与えられたことを知る方法ってあるのかな。
ruby -e '/]/' -e:1: warning: regexp has `]' without escape
■ この場合、気持ち的には例外とか出てくれるとうれしいんだけどRegexpErrorじゃ拾えないのかなー?
begin /]/ rescue RegexpError "error" end

警告を黙らせる事はできますけどね....<br><br> > ruby -e '$stderr=File.open("/dev/null", "w"); /]/'<br> -e:1: warning: regexp has `]' without escape<br> > ruby -e '$stderr=File.open("/dev/null", "w"); a="]"; /#{a}/'<br> > <br><br>最初ので黙らないのは parse 時点で警告してて $stderr が<br>まださしかわってないから?
# 1.8.1限定 & thread-UNsafe<br><br>def Regexp.warn?(str)<br> class << (warning = "")<br> alias write <<<br> end<br> verbose, $VERBOSE = $VERBOSE, true<br> stderr, $stderr = $stderr, warning<br> compile(str)<br> warning[__FILE__.size..-1].sub(/\A:\d+:\s*/, '').chomp unless warning.empty?<br>ensure<br> $stderr = stderr<br> $VERBOSE = verbose<br>end
スゲー。いただきマス。
ってか、ensureってそのレベルで書けたんですね....。知りませんでした(-o-;)。