Project

General

Profile

Actions

Feature #8956

closed

Allow hash members delimited by \n inside of {}

Added by adamdunson (Adam Dunson) over 10 years ago. Updated over 9 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:57396]

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

fix-hash-delims.patch (1.37 KB) fix-hash-delims.patch adamdunson (Adam Dunson), 09/26/2013 11:54 PM
hash-test.rb (1.05 KB) hash-test.rb adamdunson (Adam Dunson), 09/26/2013 11:54 PM
add-array-support.patch (2.6 KB) add-array-support.patch adamdunson (Adam Dunson), 10/01/2013 05:53 AM
add-method-arg-support.patch (2.48 KB) add-method-arg-support.patch adamdunson (Adam Dunson), 10/02/2013 04:05 AM
add-method-arg-support-FIXED.patch (2.32 KB) add-method-arg-support-FIXED.patch adamdunson (Adam Dunson), 10/02/2013 04:47 AM
no-comma-tests.patch (2.38 KB) no-comma-tests.patch adamdunson (Adam Dunson), 10/12/2013 12:16 AM
comic-pet-desktop-very-happy-cat.jpg (457 KB) comic-pet-desktop-very-happy-cat.jpg Happy Cat timrosenblatt (Tim Rosenblatt), 11/22/2013 05:55 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0