Hi
In other languages (e.g. Bash [1], PHP [2], Ruby, Perl), this is
typically solved by quoting the delimiter string at the start of the
here document [3]. So I would like to propose this approach for Nashorn
as well.
Note that some, like Bash and PHP, treat double quotes the same as
single quotes (i.e. interpolation is disabled), whereas others, like
Ruby and Perl, treat double quotes the same as no quotes (i.e.
interpolation is enabled). Personally, I'm strongly in favor of the
Bash/PHP approach to avoid confusion. So:
var a = 4;
var b = 2;
print(<<EOD)
${a}${b}
EOD
would print 42, but using print(<<"EOD") or print(<<'EOD') would print
${a}${b}
Kind regards, Anthony
[1] http://tldp.org/LDP/abs/html/here-docs.html#EX71C
[2]
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc
[3] http://en.wikipedia.org/wiki/Here_document
On 23/02/2015 5:03, A. Sundararajan wrote:
Hi,
The following seems to work (based on code reading + testing):
var str = "hello";
var s = "$\{str} world";
print(s); // prints ${str} world
var s1 = "${str} world";
print(s1) // prints "hello world"
Still, I've filed a bug to clarify and document expected, supported
behaviour.
https://bugs.openjdk.java.net/browse/JDK-8073613
Thanks,
-Sundar
On Sunday 22 February 2015 04:57 PM, Anthony Vanelverdinghe wrote:
Hi
How can I avoid string interpolation in here documents with Nashorn?
In other words: what if the here document contains the literal string
"${a}"? The user guide section on here documents [1] doesn't tell how
to do this.
If this is not available yet, shall I create a bug report for this?
Kind regards, Anthony
[1]
http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/shell.html#sthref26