Allow any quoted string to be multiline?

Isiah Meadows isiahmeadows at gmail.com
Sat Dec 16 05:08:46 UTC 2017


I'll note that escaped line terminators (which I brought up initially) have
been around since ES5 (which I already mentioned then). I've seen it used
before in the wild in longer strings to help break up long lines. I can't
recall exact projects, but I've seen it in OSS projects in ES5.

Other common alternatives include `[...].join("\n")` (which I normally use)
and concatenation.

On Fri, Dec 15, 2017, 21:10 kdex <kdex at kdex.de> wrote:

> 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
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20171216/8e4f59cf/attachment.html>


More information about the es-discuss mailing list