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



Reply via email to