Bug #20474
closedHeredoc common leading whitespace calculation question
Description
I think I understand that <<~ will strip common leading whitespace from all lines. However, I am confused by the following example:
eval("<<~H\n \nh\n \nH\n")
In this example, the heredoc has 3 lines: " \n", "h\n", and " \n". The common leading whitespace is definitely 0, because of the 2nd line.
However, the string is equal to "\nh\n\n". In fact, no matter how many spaces you put before the h, it will always be equal to "\nh\n\n".
I'm not sure if this is a bug, or even what is happening here. Could someone explain?
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
It looks like a bug.
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
- Status changed from Open to Closed
Applied in changeset git|5bb656e4f063e717262efe2dc303ed914eb1dd6c.
[Bug #20474] Keep spaces in leading blank line
Updated by kddnewton (Kevin Newton) over 1 year ago
Thank you!
Updated by Dan0042 (Daniel DeLorme) over 1 year ago
However, the string is equal to
"\nh\n\n".
I would have expected it to be
" \nh\n \n"
but ignoring all whitespace from blank lines seems like a convenient feature to me.
In fact, no matter how many spaces you put before the
h, it will always be equal to"\nh\n\n".
I'm pretty sure that's normal; many/most editors will strip the indentation of blank lines, so we want common leading whitespace to be computed only for lines that have some non-whitespace character.