> On Apr 9, 2017, at 9:29 AM, John Holdsworth via swift-evolution 
> <[email protected]> wrote:
> 
> Looking at 3) which is underspecified in the proposal perhaps, I’d consider 
> it a “feature" but I can see it would be too magical for some. To specify it 
> more you could say: if there is only whitespace between the last newline and 
> the end of a multiline literal this whitespace will be stripped from all 
> lines in the literal. If lines do not start with this exact sequence of 
> whitespace a warning is emitted. In addition, if the first character in the 
> literal is a newline it will be removed. This operation could be made 
> explicit e.g. #trimLeft(“”"a literal"”")

Yeah, that was my one hesitation. I actually didn’t understand the scheme at 
first and thought *all* whitespace would be left-trimmed. What about just 
adding a `leftTrimLines()` or `deindent()`+`deindent(levels:Int)` or comparable 
string method, so you could just do something like this:

let json = """
    {
        "a": "b",
        "c": {
            "d": 3
        }
    }
""".deindent()

As a bonus, you can use this for non-literals should the need arise.

> 
> Perhaps we can find common ground on 1) and 2) and even 3) with a view to 
> resubmitting if there is time. Seems mostly like we just need to discuss the 
> delimiter further and decide whether the indent trimming is a bug or a 
> feature to keep moving and not let another year slip by.

I’d really rather just see the core team accept this with a modification to 
trimming, otherwise I guarantee it’s not getting in this year.

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to