Allow any quoted string to be multiline?

kdex kdex at kdex.de
Sat Dec 16 02:10:29 UTC 2017


IIRC, Douglas Crockford used to give the following example to illustrate why 
multi-line strings without template literals are cumbersome and error-prone:

One of these snippets is okay, the other one won't even compile. Can you see 
which is which?

Snippet 1:
```js
const x = "foo\
bar";
```

Snippet 2:
```js
const x = "foo\ 
bar";
```

If you haven't already guessed it, snippet 2 contains whitespace after the 
backslash invalidating the line continuation and hence making the string 
literal invalid. That's an invisible syntax error.

Significant whitespace has never been the most popular idea in programming, and 
trailing whitespace is particularly problematic, as most editors don't even 
bother to show whitespace characters by default.

There is more than one way to treat the following case:

```js
const x = "foo
bar";
```

What should `x` contain? Should it be `"foobar"` (implicit line continuation) 
or `"foo\nbar"` (implicit EOL)?

@Kai Zhu: As has been done in the past, I, too, would like to kindly ask if 
you could please refrain from putting gigantic walls of code into your e-
mails. Your last e-mail contained 225 (!) lines of escaped HTML and two 
screenshots that appeared to be unrelated to this discussion. Would it not 
have been enough to give one instance (as opposed to 225) of a "real-world 
example" for escaping, and to spare us the attachments?

In the future, if there really is the need to show longer code, I would like 
to ask if you (and everybody else) could instead use a gist for any example 
that exceeds ≈20 LoC. Making a gist [1] on GitHub is really simple and 
introduces far less noise on this list. You don't even need an account. 
Thanks!

[1] https://gist.github.com/

On Saturday, December 16, 2017 1:12:42 AM CET Isiah Meadows wrote:
> I'm aware. I typically use "newline" and "line continuation"
> interchangeably, even though they technically aren't. (So feel free to
> substitute "line continuation" for "newline", and that should be
> accurate to what I meant. ;-))
> -----
> 
> Isiah Meadows
> me at isiahmeadows.com
> 
> Looking for web consulting? Or a new website?
> Send me an email and we can get started.
> www.isiahmeadows.com
> 
> On Fri, Dec 15, 2017 at 8:53 AM, kdex <kdex at kdex.de> wrote:
> > Sorry to be pedantic here, but:
> > 
> > ```js
> > "this\
> > right\
> > here"
> > ```
> > 
> > aren't escaped newlines; that would be "\n".
> > Those up there are line continuations. :)
> > 
> > On Friday, December 15, 2017 2:48:00 PM CET Isiah Meadows wrote:
> >> There are ES5 newline escapes. However, it'd be nice if I didn't have
> >> to resort to templates just for multiline strings. Note: it wouldn't
> >> actually simplify parsing by much - either you're handling the case
> >> and remapping CR/CRLF to NL, or you're handling the case and throwing
> >> an error.
> >> 
> >> ```js
> >> // ES5 escaped newlines
> >> 'a multi-\
> >> line string'
> >> ```
> >> -----
> >> 
> >> Isiah Meadows
> >> me at isiahmeadows.com
> >> 
> >> Looking for web consulting? Or a new website?
> >> Send me an email and we can get started.
> >> www.isiahmeadows.com
> >> 
> >> On Fri, Dec 15, 2017 at 8:43 AM, J Decker <d3ck0r at gmail.com> wrote:
> >> > If any string were allowed to be multi-line it would not break any
> >> > existing
> >> > code, and it would simplify parsing strings.
> >> > 
> >> > 'a multi-
> >> > line string'
> >> > 
> >> > Maybe this is a question... why not allow line spanning with single and
> >> > double quoted strings?
> >> > 
> >> > _______________________________________________
> >> > es-discuss mailing list
> >> > es-discuss at mozilla.org
> >> > https://mail.mozilla.org/listinfo/es-discuss
> >> 
> >> _______________________________________________
> >> es-discuss mailing list
> >> es-discuss at mozilla.org
> >> https://mail.mozilla.org/listinfo/es-discuss
> > 
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org
> > https://mail.mozilla.org/listinfo/es-discuss
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20171216/ca6f9f42/attachment-0001.sig>


More information about the es-discuss mailing list