[#57574] [ruby-trunk - Feature #8976][Open] file-scope freeze_string directive — "akr (Akira Tanaka)" <akr@...>

70 messages 2013/10/02

[#57579] [ruby-trunk - Feature #8977][Open] String#frozen that takes advantage of the deduping — "sam.saffron (Sam Saffron)" <sam.saffron@...>

25 messages 2013/10/02

[#57679] [ruby-trunk - Feature #8987][Open] map/collect extension which handles arguments — "sowieso (So Wieso)" <sowieso@...>

16 messages 2013/10/05

[#57705] [ruby-trunk - Feature #8992][Open] Use String#freeze and compiler tricks to replace "str"f suffix — "headius (Charles Nutter)" <headius@...>

43 messages 2013/10/07

[#57727] [ruby-trunk - Feature #8998][Open] string keys for hash literals should use fstrings — "normalperson (Eric Wong)" <normalperson@...>

17 messages 2013/10/08

[#57771] [ruby-trunk - Bug #9008][Open] TestProcess#test_clock_getres_constants and TestProcess#test_clock_gettime_constants fails on ARM — "vo.x (Vit Ondruch)" <v.ondruch@...>

15 messages 2013/10/09

[#57888] [ruby-trunk - Feature #9025][Open] Clarify the error message when calling a method with the wrong number of arguments — Nerian (Gonzalo Rodríguez) <siotopo@...>

11 messages 2013/10/15

[#57993] [ruby-trunk - Feature #9047][Open] Alternate hash key syntax for symbols — "jamonholmgren (Jamon Holmgren)" <jamon@...>

13 messages 2013/10/23

[#58007] [ruby-trunk - Feature #9049][Open] Shorthands (a:b, *) for inclusive indexing — "mohawkjohn (John Woods)" <john.o.woods@...>

25 messages 2013/10/24

[#58033] [ruby-trunk - Bug #9053][Open] SSL Issue with Ruby 2.0.0 — "tisba (Sebastian Cohnen)" <ruby-lang@...>

16 messages 2013/10/25

[#58080] [ruby-trunk - Feature #9064][Open] Add support for packages, like in Java — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

23 messages 2013/10/30

[ruby-core:57567] [ruby-trunk - Feature #8956] Allow hash members delimited by \n inside of {}

From: "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>
Date: 2013-10-01 22:31:19 UTC
List: ruby-core #57567
Issue #8956 has been updated by sawa (Tsuyoshi Sawada).


=begin
Another case where similar syntax might be relevant is `| |` inside a block. Whether you want to do this:

   {|
      foo
      bar
      baz
    | ....}

should go together with whether arguments in method definition can be written as:

    def foo(
      foo
      bar = some_complicated_expression_as_default_value
      baz = maybe_another_complicated_default_value
    )... end

The latter is useful if you want to put some complicated expression as default value. Usefulness of the former would depend on whether default value would be allowed for block variables.

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

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/

In This Thread