> On Apr 10, 2019, at 5:36 PM, Guy Steele <guy.ste...@oracle.com> wrote:
> 
> 
>> On Apr 10, 2019, at 4:54 PM, Brian Goetz <brian.go...@oracle.com 
>> <mailto:brian.go...@oracle.com>> wrote:
>> 
>> This is a plateful! 
>> 
>> Stripping "incidental" whitespace is an attractive target of opportunity; 
>> the real question is, can we do it right enough of the time, and when we get 
>> it wrong, is there an easy way for the user to recover and get what they 
>> want?  
>> 
>> Kevin described this as: "find the magic rectangle"; that there should be a 
>> rectangle enclosing the snippet that sets apart the incidental whitespace 
>> from the essential.  In your examples, most of the time, the magic rectangle 
>> is, well, the actual rectangle in your text.  
>> 
>> 
>>> 
>>> Examples;
>>> 
>>> String a = """
>>>            +--------+
>>>            |  text  |
>>>            +--------+
>>>            """; // first characters in first column?
> 
> Which suggests yet another approach to multiline string literals:
> 
> String a = “””””””””””””””””””””””””””””””””””””””
>          “A rectangle of double quotes         "
>            “   can enclose any arbitrary text    “
>            “   with any desired indentation,     “
>            “   and you can assume any trailing   “
>            “   whitespace on each line will be   “
>            “   removed and that each line will   “
>            “   end with a \\n <smb://n>.                   “
>            “                                     “
>            “So all you need is IDE support for   “
>            “   making nice rectangles.           “
>            “””””””””””””””””””””””””””””””””””””””;
> 
> String result = “”””””””””””””””””””””””””””””””””””””””””””””””
>                 “public class Main {                           “
>                 “    public static void main(String... args) { “
>                 “        System.out.println("Hello World!”);   “
>                 “    }                                         “
>                 “}                                             “
>                 “”””””””””””””””””””””””””””””””””””””””””””””””;
> 
> String html = “””””””””””””””””””””””””””””””””””””””””””””””
>               “<html>                                       “
>               “  <body style=\"width: 100vw\”>              “
>               “        <p>Hello World.</p>                  “
>               “  </body>                                    “
>               “  <script>console.log(\"\\nloaded\")</script>”
>               “</html>                                      “
>               “””””””””””””””””””””””””””””””””””””””””””””””;
> 

Note that I was inconsistent with my use of escapes.  I reckon you should be 
able to use escapes, but perhaps one need not escape included double quotes 
because you can tell from the length of the initial line of double-quotes how 
much text to skip before you expect see the double quote that marks the 
right-hand edge of the rectangle.

Reply via email to