Issue #8956 has been reported by adamdunson (Adam Dunson).

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

Author: adamdunson (Adam Dunson)
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 


=begin
Currently, hashes require members to be delimited by commas ((({,}))), even inside curly braces. E.g.,

  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:

  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:

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

  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.
=end


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