From: Ralph Corderoy Date: 2011-07-20T09:24:38+09:00 Subject: [ruby-core:38225] [Ruby 1.9 - Feature #5054] Compress a sequence of ends Issue #5054 has been updated by Ralph Corderoy. > I prefer end! to enn..d. That cannot work because it's not known how many ends are being replaced; indentation can't be relied upon as this isn't Python. Hence the original suggestion of ennnd. But that's not good because humans shouldn't have to count when the computer can. Can folks please stop adding comments that are +1 for ennd or end! or similar without addressing the above points. It adds nothing to the discussion and suggests the writer hasn't read to the end of the issue before posting. As for "enddo" only end-ing to the innermost "do", yes, that's correct. But it may be saving quite a few "end"s to do with ifs and fors that come in between, giving back some valuable vertical space. ---------------------------------------- Feature #5054: Compress a sequence of ends http://redmine.ruby-lang.org/issues/5054 Author: ANDO Yasushi ANDO Status: Open Priority: Normal Assignee: Category: 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