From: "mame (Yusuke Endoh) via ruby-core" Date: 2023-03-24T04:55:11+00:00 Subject: [ruby-core:112989] [Ruby master Bug#19544] Custom quotes inconsistency 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/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/