From: "Martin Dürst" <duerst@...>
Date: 2011-07-19T15:55:40+09:00
Subject: [ruby-core:38183] [Ruby 1.9 - Feature #5054] Compress a sequence of ends


Issue #5054 has been updated by Martin D��rst.


I'm not sure yet what to think of this proposal, but if it gets introduced, please lets make sure to improve the allignment of the ennnnnd.

Rather than:

Yasushi ANDO wrote:

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

please put the first character of the ennnnd in the same column as the *outermost* construct it closes:

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

Of course, Ruby won't care, but it's easier to understand for humans. 

----------------------------------------
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