irbでennnnndを使えるようにするパッチ書いた

おまえまだそれ引き摺ってんのかよと言われたら、はいそうですと答えるしかない。

残念ながらcloseされてしまったというか、してしまったennnnndだけど、Ruby本体はともかくirbにあったら実際便利な気もします。

ということで作ってみました。

*** ruby-1.9.2-p290/lib/irb/ruby-lex.rb 2010-12-08 17:09:11.000000000 +0900
--- irb-ennnd/lib/irb/ruby-lex.rb       2011-07-31 11:37:21.000000000 +0900
***************
*** 780,785 ****
--- 780,796 ----
        token.concat getc
      end
  
+     if token =~ /e(nn+)d/
+       $1.size.times do
+         @rests.unshift "end", "\n"
+       end
+       token.size.times do
+         @readed.pop
+       end
+       @readed.push "\n"
+       return
+     end
+ 
      # almost fix token
  
      case token

利用例はこんな感じ。irbは現在のインデントレベルが表示されるので使い勝手もなかなか悪く無いっすね。

$ ruby1.9 -Ilib bin/irb 
irb(main):001:0> class Foo
irb(main):002:1>   def bar
irb(main):003:2>     p :hello
irb(main):004:2>   ennd
=> nil
irb(main):007:0* Foo.new.bar
:hello
=> :hello

これFeature Requestしたらいい加減にしろって怒られちゃうかなぁ・・・。