https://doc.perl6.org/language/quoting
> On Mar 24, 2016, at 9:23 AM, Patrick Gili <[email protected]> > wrote: > > I'm more in favor of Perl6 stye string literals, in general. > > -Patrick > >> On Mar 23, 2016, at 12:49 AM, Steve K. Chiu via swift-evolution >> <[email protected]> wrote: >> >> Hi, >> >> I am new to swift-evolution list, here is my draft proposal for the >> multi-line string literal problem. >> The idea had been discussed in the list before, but it seems there are no >> real solution to many of the string literal problem. >> Let's first define what are the problem with string literal: >> >> 1. should be able to disable escape char >> >> 2. or better, able to replace escape char with user defined char >> >> 3. should be able to write multi-line string literal, and is copy-paste >> friendly >> >> 4. for multi-line string, should be able to remove first and last newline >> char, so user can write string in block >> >> 5. for multi-line string, should be able to remove leading indent, or >> remove all indent >> >> 6. for multi-line string, should be able to replace newline with user >> defined string ("\r\n", "\r", "\r", or simply " ") >> >> 7. should be able to add feature over time, without breaking existing code >> >> My proposal to the above problem is to introduce new 'process instruction' >> (not sure how to call it), in the following form: >> >> #string(options) "text" >> >> for example: >> >> #string(escape: nil) "^\d+" >> >> #string(escape: "$", end: "<EOF>") " >> $(username), >> Is it 1358 yet? >> <EOF>" >> >> It is possible to add many options list above, and you can add more options >> over time without breaking code. >> >> #string( >> escape: Character? = "\\", >> end: String? = nil, >> skipEnclosureNewline: Bool = true, >> skipLeadingIndent: Bool = true, >> skipAllIndent: Bool = false, >> newline: String? = nil >> ) >> >> for 1. & 2., escape option to replace escape char, pass nil will disable >> escape. >> >> for 3., end option for end-of-string mark, pass nil will disable multi-line >> processing. >> >> for 4., skipEnclosureNewline will skip newline if it is the first or last >> char of the string. >> >> for 5., skipLeadingIndent will skip leading indent, leading indent is the >> leading white-spaces of first line of multi-line string. >> >> for 5., skipAllIndent will skip all indent, this will override >> skipLeadingIndent. >> >> for 6., newline option to replace newline char in multi-line string, pass >> nil will disable the replacement (as-is in the source). >> >> But there are one problem remain, as you can see, the #string with options >> will become very long; I don't think it is a pleasure to use such expression >> except for one time literal. To fix the problem, I propose yet another >> process instruction: >> >> #let #rex = #string(escape: nil) >> #let #mail = #string(escape: "$", end: "<EOF>") >> >> Now you can write the string as: >> >> #rex "^\d+" >> >> #mail " >> $(username), >> Is it 1358 yet? >> <EOF>" >> >> #let should be able to be used with other # process instruction as well, for >> example, #available, among other things. >> >> What do you think? >> >> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] >> https://lists.swift.org/mailman/listinfo/swift-evolution > _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
