Feature #8956
closedAllow hash members delimited by \n inside of {}
Description
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.
Files