Project

General

Profile

Feature #5054

Updated by Nobuyoshi Nakada 11 months 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