Indented multi-line strings (was: "Data blocks" syntax specification draft)

Dan Strohl D.Strohl at F5.com
Wed May 23 12:38:25 EDT 2018


> 
> > Personally though, I would not hard code it to knock out 4 leading
> > spaces.   I would have it handle spaces the same was that the existing
> > parser does, if there are 4 spaces indending the next line, then it
> > removes 4 spaces, if there are 6 spaces, it removes 6 spaces, etc...
> > ignoring additional spaces within the data-string object.  Once it
> > hits a line that has the same number if indenting spaces as the
> > initial token, the data-string object is finished.
> 
> How about this?
> 
>     x = ''''
>         Here is a multi-line string
>             with
>           indentation.
>         ''''
> 
> This would be equivalent to
> 
>     x = 'Here is a multi-line string\n    with\n  indentation.'
> 

Looks right to me, I don't know if the quad quote overloads the ' and " character too much, but I'm not against it.


> Rules:
> 
>  * The leading and trailing '''' must be aligned vertically.
>  * The contents of the string must be indented at least as far as the
>    delimiters (and with consistent tabs/spaces).
>    This leading white space is ignored.
>  * All the leading white space beyond this 'left edge' is preserved.
>  * The newlines after the leading '''' and before the trailing '''' are
>    ignored, all the others preserved. (I thought about preserving the
>    trailing newline, but it is easier to add one than remove one.)
> 
>         hp
> 
> 


These sound good to me.





More information about the Python-list mailing list