Open
Description
Hi Markus,
When there is an interpolation in the heredoc, it comes out underescaped.
require 'unparser'
ast = Unparser.parse(<<~'OUTER')
<<~RUBY
validates :#{field_sid}, format: {
with: /\\A\\-+(\\w+\\-+)|(\\w+\\.)\\Z/i
}
RUBY
OUTER
p ast
puts Unparser.unparse(ast)
s(:dstr,
s(:str, "validates :"),
s(:begin,
s(:send, nil, :field_sid)),
s(:str, ", format: {\n"),
s(:str, " with: /\\A\\-+(\\w+\\-+)|(\\w+\\.)\\Z/i\n"),
s(:str, " }\n"))
<<-HEREDOC
validates :#{field_sid}, format: {
with: /\A\-+(\w+\-+)|(\w+\.)\Z/i
}
HEREDOC
All the backslashes should be doubled. And they are if I remove the interpolation.
Cheers!
Metadata
Assignees
Labels
No labels