According to this esdiscuss discussion, it is possible in ECMAScript 6 to define multiline strings without having to place subsequent lines of the string at the very beginning of the line.
Allen Wirfs-Brock’s post contains a code example:
var a = dontIndent
`This is a template string.
Even though each line is indented to keep the
code neat and tidy, the white space used to indent
is not in the resulting string`;
Could someone explain how this can be achieved? How to define this dontIndent
thing in order to remove the whitespace used for indentation?
2020 answer: there is still nothing built into the JS stdlib to handle de-denting long lines, although TC39 has discussed adding a new template literal that handles indentation. You have 2 options presently:
dedent-js
package actually works with both tabs and spaces, dedent
is a separate package and fails on tabs: var dedent = require('dedent-js');
var text = dedent(`
<div>
<span>OK</span>
<div>
<div></div>
</div>
</div>
`);
Will strip out the proceeding whitespace on each line and the leading carriage return. It also has more users, an issue tracker, and is more easily updated than copypasting from Stack Overflow!
The empty export...
is immediately after the carriage return, but shows up as indented.