[Strange: I didn't get this mail through the list, only directly] On 2018-05-31 14:39:17 +0000, Dan Strohl wrote: > > This is of course not a problem if the *trailing* quote determines the > > indentation: > > > > a_multi_line_string = i''' > > Py- > > thon > > ''' > > I get the point, but it feels like it would be a pain to use, and it > "Feels" different from the other python indenting, which is something > that I would want to stay away from changing.
Yes, it's the wrong way around. The indentation should be determined by
the start quote. That's why I initially wrote that the quotes must
line up vertically.
Unfortunately you can't write
a_multi_line_string =
i'''
Py-
thon
'''
although you can write
a_multi_line_string = \
i'''
Py-
thon
'''
which is visually not much worse.
> > > In any case, Chris made a good point that I agree with. This doesn't
> > > really need to be syntax at all, but could just be implemented as a
> > > new string method.
> >
> > Depending on the details, not quite. A method wouldn't get the horizontal
> > position of the leading quote. It could infer the position of the trailing
> > quote,
> > though.
> >
>
> What about if we used Chris's approach, but added a parameter to the
> method to handle the indent?
>
> For example,
>
> Test = """
> Hello, this is a
> Multiline indented
> String
> """.outdent(4)
Eek! No, I don't think that's a good idea. It means that the programmer
has to count spaces and has to remember to adjust the parameter if the
indentation changes (e.g. because the block is wrapped in a loop or
factored out to a function).
> The outdent method could look like:
>
> string.outdent(size=None)
> """
> :param size : The number of spaces to remove from the beginning of
> each line in the string. Non space characters will not be
> removed. IF this is None, the number of characters in the first
> line of the string will be used.
The default should be the minimum number of leading spaces on non-empty
lines, I think. This is compatible with PEP 257. And in fact it allows
all lines to start with whitespace if the string ends with a newline
(which is a weird dependency, but probably not much of a restriction in
practice).
> If this is an iterable, the numbers returned from each iteration
> will be used for their respective lines. If there are more lines
> than iterations, the last iteration will be used for subsequent
> lines.
This looks like overkill to me. What would be the use case?
> This solves the problem in a very pythonic way,
Everybody has their own definition of "pythonic", I guess.
hp
--
_ | Peter J. Holzer | we build much bigger, better disasters now
|_|_) | | because we have much more sophisticated
| | | [email protected] | management tools.
__/ | http://www.hjp.at/ | -- Ross Anderson <https://www.edge.org/>
signature.asc
Description: PGP signature
-- https://mail.python.org/mailman/listinfo/python-list
