Project

General

Profile

Feature #5054

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

Though as matz said at rubykaigi2011 ruby is a quite good language, many people hate a long sequence of `end` `end' like this: 

 ```ruby 
 module MyModule 
   class MyClass 
     def my_method 
       10.times do 
         if rand < 0.5  
           p :small 
         end  
       end  
     end  
   end  
 end 
 ``` 

 So, I'd like to propose introducing a special keyword, en(n+)d. Using this keyword, we can rewrite the above example like this: 

 ```ruby 
 module MyModule 
   class MyClass 
     def my_method 
       10.times do 
         if rand < 0.5  
           p :small 
         ennnnnd  
 ``` 

  

 I know matz's already rejected a python-style block. He wrote: 

 > it works badly with 
 >     * tab/space mixture 
 >     * templates, e.g. eRuby 
 >     * expression with code chunk, e.g lambdas and blocks 
 http://www.ruby-forum.com/topic/108457 

 These bad things won't occur by introducing en(n+)d. 

 Some implementations already exists. 

 JRuby 
 - https://gist.github.com/1088363 

 CRuby 
 - http://www.atdot.net/sp/raw/kn9iol 
 - http://d.hatena.ne.jp/ku-ma-me/20110718/p1 

 Thanks for your consideration.

Back