
Issue #19544 has been updated by mame (Yusuke Endoh).
Presumably because of some look-ahead distincting % from percent-string starter
It depends on the lex state, not look-ahead. If you place `%` in a context where the beginning of an expression is expected, you can write %-literal with spaces as delimiters. ``` p(% foo ) #=> "foo" p(% jim\ beam ) #=> "jim beam" ``` `%w` cannot be used with a space delimiter because it interprets all whitespace characters as a word delimiter. ---------------------------------------- Bug #19544: Custom quotes inconsistency https://bugs.ruby-lang.org/issues/19544#change-102519 * Author: hurricup (Alexandr Evstigneev) * Status: Open * Priority: Normal * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- According to `parse_percent` in `parse.y`: For `%` we should be able use ascii non alphanumeric delimiters. But, `p % jim beam ;` does not work. Presumably because of some look-ahead distincting `%` from percent-string starter. Seems it is the same for any `\s` after `%` For the explicit `%` construction, with type specifier `%[QqWwIisrx]` we should be able to use non-alphanumeric ascii characters, which includes `\s`. But: This works: ``` p %s jim beam ``` And this does not: ``` p %w jim\ beam ``` with unterminated list error. First seems unavoidable, but second looks like obvious error of finding terminating `\n` -- https://bugs.ruby-lang.org/