This is probably too late, and I still have to read over the rest of the thread, but one possibility would be to just concatenate adjacent string literals (where a one sided string literal extends until the end of the line.
E.g. In your example: let string = "Hello " // Three trailing space characters "Swift " 4.0" // Three leading space characters print(string) // prints: Hello___Swift ___4.0 where _ is a space character My iPad is really fighting me here, but you see what I mean. And unclosed quote on a line could simply include the new line character as part of the string. A closed quote on a line does not include the new line. > On Apr 3, 2017, at 2:35 AM, Adrian Zubarev via swift-evolution > <swift-evolution@swift.org> wrote: > > Simply because it’s always a zero to n space characters at the start of the > line and at its end. You cannot predict the need of every multi-line string. > > I don’t disagree that typing out some extra " and \ is tedious, but what I > really like about it is, it’s precise. > > let string = > "Hello \ // Three trailing space characters > "Swift\ > " 4.0" // Three leading space characters > > print(string) // prints: "Hello___Swift___4.0" where _ ist a space character > > > -- > Adrian Zubarev > Sent with Airmail > > Am 3. April 2017 um 11:27:58, Charlie Monroe (char...@charliemonroe.net) > schrieb: > >> Yes, but with ", you need to escape " occurrences - which is a fairly common >> character - I'd say more common than |. >> >> The trailing whitespace - why can't it just be included in the string >> automatically? Just for supporting comments? >> >>> On Apr 3, 2017, at 11:19 AM, Adrian Zubarev >>> <adrian.zuba...@devandartist.com> wrote: >>> >>> This is almost the same as proposed, but we use " instead of |, however you >>> still don’t have trailing space characters covered like this. >>> >>> >>> >>> >>> -- >>> Adrian Zubarev >>> Sent with Airmail >>> >>> Am 3. April 2017 um 11:16:41, Charlie Monroe (char...@charliemonroe.net) >>> schrieb: >>> >>>> You can. I wish I remembered the language this was in (not sure if it's in >>>> Scala), but you can do something like: >>>> >>>> let xml = ''' >>>> |<?xml version="1.0"?> >>>> |<catalog> >>>> | <...> >>>> |</catalog> >>>> ''' >>>> >>>> This way, if you care about the leading whitespace, you define the line >>>> beginning using "|". >>>> >>>> Two characters aren't harmful, but in my experience when working with HTML >>>> strings, etc. the quote-escaping is extremely tedious. >>>> >>>>> On Apr 3, 2017, at 11:06 AM, Adrian Zubarev >>>>> <adrian.zuba...@devandartist.com> wrote: >>>>> >>>>> My main concern with this approach is that you don’t have any control >>>>> about indent and you loose pre- and post spacing characters. >>>>> >>>>> A concatenating approach is a little tedious but it’s precise. In any >>>>> situation a multi-lined string is not softly wrapped string, which >>>>> implies that you will have to press enter for each new line you wish to >>>>> have. IMHO adding two more characters for each line isn’t that harmful. >>>>> ;-) >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Adrian Zubarev >>>>> Sent with Airmail >>>>> >>>>> Am 3. April 2017 um 10:49:02, Charlie Monroe (char...@charliemonroe.net) >>>>> schrieb: >>>>> >>>>>> While I long for multiline string literals, I'd also very like to see a >>>>>> different syntax as in many cases, these can be XML/HTML snippets and >>>>>> the use of quotes is ubiqituous. I'd very much like to see a variant >>>>>> where you can simply paste almost any string without escaping it. >>>>>> >>>>>> For example, Scala uses a tripple-quote syntax... As we've gotten rid of >>>>>> ' for character literals, we could use it for multiline strings? >>>>>> >>>>>> Or possibly tripple-apostrophe for multiline strings? >>>>>> >>>>>> let xml = ''' >>>>>> <?xml version="1.0"?> >>>>>> <catalog/> >>>>>> ''' >>>>>> >>>>>> >>>>>>> On Apr 3, 2017, at 9:01 AM, Adrian Zubarev via swift-evolution >>>>>>> <swift-evolution@swift.org> wrote: >>>>>>> >>>>>>> Hello Swift community, >>>>>>> >>>>>>> on Github there is a PR for this proposal, but I couldn’t find any up >>>>>>> to date thread, so I’m going to start by replying to the last message I >>>>>>> found, without the last content. >>>>>>> >>>>>>> I really like where this proposal is going, and my personal preference >>>>>>> are *continuation quotes*. However the proposed solution is still not >>>>>>> perfect enough for me, because it still lacks of precise control about >>>>>>> the trailing space characters in each line of a multi-line string. >>>>>>> >>>>>>> Proposed version looks like this: >>>>>>> >>>>>>> let xml = "<?xml version=\"1.0\"?> >>>>>>> "<catalog> >>>>>>> " <book id=\"bk101\" empty=\"\"> >>>>>>> " <author>\(author)</author> >>>>>>> " <title>XML Developer's Guide</title> >>>>>>> " <genre>Computer</genre> >>>>>>> " <price>44.95</price> >>>>>>> " <publish_date>2000-10-01</publish_date> >>>>>>> " <description>An in-depth look at creating applications >>>>>>> with XML.</description> >>>>>>> " </book> >>>>>>> "</catalog> >>>>>>> "" >>>>>>> I would like to pitch an enhancement to fix the last tiny part by >>>>>>> adding the escaping character ‘' to the end of each line from 1 to (n - >>>>>>> 1) of the n-lined string. This is similar to what Javascript allows us >>>>>>> to do, except that we also have precise control about the leading space >>>>>>> character through ’"’. >>>>>>> >>>>>>> The proposed version will become this: >>>>>>> >>>>>>> let xml = "<?xml version=\"1.0\"?>\ >>>>>>> "<catalog>\ // If you need you can comment here >>>>>>> " <book id=\"bk101\" empty=\"\">\ >>>>>>> " <author>\(author)</author>\ >>>>>>> " <title>XML Developer's Guide</title>\ >>>>>>> " <genre>Computer</genre>\ >>>>>>> " <price>44.95</price>\ >>>>>>> " <publish_date>2000-10-01</publish_date>\ >>>>>>> " <description>An in-depth look at creating applications >>>>>>> with XML.</description>\ >>>>>>> " </book>\ >>>>>>> "</catalog>\ >>>>>>> "" >>>>>>> Here is another example: >>>>>>> >>>>>>> let multilineString: String = "123__456__\ // indicates there is >>>>>>> another part of the string on the next line >>>>>>> "__789_____\ // aways starts with `"` and >>>>>>> ends with either `\` or `"` >>>>>>> "_____0_" // precise control about pre- >>>>>>> and post-space-characters >>>>>>> >>>>>>> let otherString = "\(someInstance)\ /* only comments are allowed in >>>>>>> between */ "text \(someOtherInstance) text" >>>>>>> This is simply continuation quotes combined with backslash >>>>>>> concatenation. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Adrian Zubarev >>>>>>> Sent with Airmail >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> 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
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution