I admit I have not been following this closely and have not read all proposals and counter proposals and concerns - but of course that isn’t going to stop me from tossing out my own suggestion!
My idea starts with this: let code = #string // some code that we are generating + #string and some more code here + #string another line here + #string + #string including a blank line if we wanted + #string etc. When used in this way, it simply generates a string literal from everything that follows “#string” up to and including the newline. To chain multiple lines together, it just uses string’s normal + operator. This would be the same as writing the following code: let code = "// some code that we are generating\n" + "and some more code here\n" + "another line here\n" + "\n" + "including a blank line if we wanted\n" + "etc.\n" I would then extend this to support some other useful approaches such as: #string(THE_END) blah blah blah \\\ blah can be anything \o/ what ever!! THE_END Or to use the entire contents of an external file: #string(“file.txt") l8r Sean > On May 5, 2016, at 3:51 PM, Brent Royal-Gordon via swift-evolution > <swift-evolution@swift.org> wrote: > >> It had the idea that maybe the motivation behind continuation quotes is to >> make using multiline strings harder to use; in order to discourage their use >> at all. > > Absolutely not, and frankly I resent the implication. > > I'm looking at a space where (in my opinion) all existing designs are ugly > and inelegant and trying to find something better. There are *reasons* Swift > 2 doesn't allow newlines in quote marks; I'm trying to address them, not > ignore them. There are nasty formatting problems; I'm trying to solve them, > not tolerate them. There are significant context-sensitivity issues; I'm > trying to fix them, not punt the problem to a syntax highlighter that is > absent or incorrect in half of our tools. > > Here's a piece of code-generating code I once wrote, ported to this prototype: > > https://gist.github.com/brentdax/8a8ee1f6028230f68ed85b7f3ebc95bf > > (The actual code generation starts on line 93.) > > And here's the same code in (beta-era) Swift 2: > > > https://github.com/brentdax/WebResponder/blob/master/WebResponderCore/WebResponderCore/codes2swift.swift > > I think the new version is an improvement over the old. I think I like it > better than I would with `"""` or heredocs forcing things against the left > margin. I think it's nice that I can look at any line—out of context, random > access—and see which parts are string literals. I think if I want to add a > doc comment to each of the constants it generates, I have to do a little > awkward code shuffling, but the result is worth it: > > for statusLine in statusLines { > code += " /// The HTTP \(statusLine.code) \(statusLine.message) > status, used with `HTTPResponseType.status`. > " \(statusLine.constant) > " > "" > } > > Overall, I find this code a lot more pleasant to read than it was in Swift 2, > and somewhat more pleasant than it would be with `"""` or a heredoc. Maybe > you don't agree; maybe you'd rather import some other language's warts. I > understand—those warts come with convenience advantages, and you might prefer > that convenience to the other things. > > But at least have the basic respect for opposing viewpoints not to impugn my > motives because you disagree with me or don't like what I suggest. That is > just not nice. > > -- > Brent Royal-Gordon > Architechies > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution