Issue #16985 has been updated by marcandre (Marc-Andre Lafortune).


For `String`, I meant to say that current format would be kept the same exc=
ept if the single quote version exist and has no escape.

```ruby
pp "Hello" # =3D> "Hello" (no change)
pp "Won't\nwork \"Marc-Andr=E9\"" =3D> "Won't\nwork \"Marc-Andr=E9\"" (no c=
hange)
pp "Hello \"Marc-Andr=E9\"" # =3D> 'Hello "Marc-Andr=E9"' (simpler version)

```

----------------------------------------
Feature #16985: Improve `pp` for `Hash` and `String`
https://bugs.ruby-lang.org/issues/16985#change-86319

* Author: marcandre (Marc-Andre Lafortune)
* Status: Open
* Priority: Normal
* Assignee: akr (Akira Tanaka)
----------------------------------------
Could we improve `pp` for `Hash` and `String`:

```ruby
pp({hello: 'My name is "Marc-Andr=E9"'})
# =3D>
{hello: 'My name is "Marc-Andr=E9"'} =

# instead of
{:hello=3D>"My name is \"Marc-Andr=E9\""}
```

If any key is non-symbol, they would continue to be output as `<key> =3D> <=
value>`. If a string contains single quotes, or characters that need escapi=
ng (e.g. `"\n"`), current format would be used.

I'll gladly provide a PR if this is deemed acceptable.

I would even like this for `String#inspect` and `Hash#inspect` but it's not=
 clear if this could lead to much incompatibility (maybe test suites?)



-- =

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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=3Dunsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>