Raw String Literals indentation management

Guy Steele guy.steele at oracle.com
Thu Jun 7 16:39:09 UTC 2018


> On Jun 7, 2018, at 9:11 AM, Jim Laskey <james.laskey at oracle.com> wrote:
> 
> This topic died down while we were off doing other things including some more research, consequently Raw String Literals will miss the JDK 11 train.
> 
> We have introduced some new String methods in JDK 11 (and one Predicate method) that will help us along the way (used in some of the examples below.)

Very nice.  I do note that the meaning of .indent() is not immediately apparent from the name, especially because if it does anything at all, it *removes* some indentation.

Allow me to suggest eliminating .indent(), and replacing it with .reindent(n), which has the effect of .indent().indent(n) (in other words, it "changes the indentation to be n”).  If you don’t like the name “reinvent”, it could be “leftMargin”.

The name “lines” is similarly uninformative, and the LinesOptions business seems kind of clunky: useful if we expect to be “computing lines options”, but if not, I would rather see

        System.out.println(`
           abc
           def
           ghi
        `.removeOneLeadingBlankLine().removeOneTrailingBlankLine().count());

and other available methods are

	removeAllLeadingBlankLines()
	removeAllTrailingBlankLines()
	removeAllSurroundingBlankLines()
	removeAllBlankLines()

which I think would cover 99.9% of uses.

—Guy

P.S. In doc for .indent(int n), "take affect” => “take effect”.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20180607/1d74928d/attachment.html>


More information about the amber-spec-experts mailing list