Allow any quoted string to be multiline?

kdex kdex at kdex.de
Sat Dec 16 05:21:54 UTC 2017


Another place where this is used particularly often is when dynamically 
constructing the source for WebGL shaders in the same `<script>` tag as the 
one where the shaders are compiled.

On Saturday, December 16, 2017 6:08:46 AM CET Isiah Meadows wrote:
> 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 --------------
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/60a98d06/attachment-0001.sig>


More information about the es-discuss mailing list