From: Ralph Corderoy Date: 2011-07-23T00:49:19+09:00 Subject: [ruby-core:38401] [Ruby 1.9 - Feature #5054] Compress a sequence of ends Issue #5054 has been updated by Ralph Corderoy. Kurtis Rainbolt-Greene wrote: > The `endwhile` and `endif` or `fi` solutions aren't *solutions* because they can't be used for block arguments for methods: (Not "fi", please, awful! :-) You're correct. It can't. Although there would still seem to be many occasions when they are useful and would save many "end"s. Other than labelling the first method call and having an "endlabel A" as mentioned above I can't see any obvious way to improve that. An "endall" might be useful some of the time, but would be more descriptive as "endmodule" or whatever is needed at that point. Often, you'd want to "end" lots of things but not all of them. ---------------------------------------- Feature #5054: Compress a sequence of ends http://redmine.ruby-lang.org/issues/5054 Author: Yasushi ANDO Status: Assigned Priority: Normal Assignee: Yasushi ANDO Category: Joke Target version: Though as matz said at rubykaigi2011 ruby is a quite good language, many people hate a long sequence of `end' like this: 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: 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. -- http://redmine.ruby-lang.org