Issue #8956 has been updated by Alexey Muranov.


I have proposed another version: #10528.

----------------------------------------
Feature #8956: Allow hash members delimited by \n inside of {}
https://bugs.ruby-lang.org/issues/8956#change-50020

* Author: Adam Dunson
* Status: Rejected
* Priority: Normal
* Assignee: 
* Category: core
* Target version: 
----------------------------------------
Currently, hashes require members to be delimited by commas (`,`), even inside curly braces. E.g.,

~~~ruby
some_hash = {
  :foo => 'bar',
  :bar => 'foo',
  :baz => {
    :qux => 'quux',
    :corge => 'grault'
  }
}
~~~

In my opinion, these commas add nothing of value to this particular example since, visually, the members are already delimited by a newline (`\n`). Additionally, missing a comma between members results in `syntax error, unexpected tSYMBEG, expecting '}'`.

I propose we make these commas optional, such that the following syntax would be possible:

~~~ruby
some_hash = {
  :foo => 'bar'
  :bar => 'foo'
  :baz => {
    :qux => 'quux'
    :corge => 'grault'
  }
}
~~~

This change would not affect existing hashes. Developers would be able to mix and match the old and new syntaxes as such:

~~~ruby
some_hash = {
  :foo => 'bar'
  :bar => 'foo'
  :baz => {
    :foo => 'bar' + 'baz'
    :bar => 'foo', :qux => 'quux'
    :corge => 'grault'
  }
}
~~~

This change would also reduce the occurrence of syntax errors in cases where the developer temporarily replaces a value in the hash, e.g.,

~~~ruby
some_hash = {
  :this => 'that',
  :foo => 'not bar'#'bar',
  :those => 'the other'
}
~~~

Finally, this change would only affect hashes inside curly braces (for hopefully obvious reasons).

I have attached a diff of my suggested changes along with a script to test a variety of use cases. I also have an open pull request on GitHub: URL:https://github.com/ruby/ruby/pull/402

Please let me know if there's anything I've missed or that needs clarification.


---Files--------------------------------
fix-hash-delims.patch (1.37 KB)
hash-test.rb (1.05 KB)
add-array-support.patch (2.6 KB)
add-method-arg-support.patch (2.48 KB)
add-method-arg-support-FIXED.patch (2.32 KB)
no-comma-tests.patch (2.38 KB)
comic-pet-desktop-very-happy-cat.jpg (457 KB)


-- 
https://bugs.ruby-lang.org/