Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: indented heredocs

On Dec 30,  1:31am, Nikolay Aleksandrovich Pavlov (ZyX) wrote:
} 22.12.2016, 01:11, "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxx>:
} > I would propose instead something similar (read on below) to this:
} >
} > % cat <<-' xx'

As has already been pointed out, this can't be used exactly as-is,
because quotes around the end marker already have semantics.

} This makes changing the indent rather tricky.

Well ... it means you have to both change the indent and declare that
you've changed it.  I wouldn't call that "tricky".

} YAML does better here: amount of stripped indent is either determined
} based on the first non-blank line [...]

This is at least feasible.  (Does "non-blank" mean "contains a character
that is not whitespace"?  What's whitespace?)

Would we want to strip leading space and tab, or e.g. leading $IFS (with
the probable exclusion of the set $'\f\n\r\v' in that case)?

} or is specified explicitly, relative to the indent of the line where
} block scalar starts

Now that latter I *would* call "tricky" -- a numeric count relative
to some other indent?  What if some of the leading whitespace is tabs?
Also if I read the rest of your explanation correctly, this would make
signficant the leading whitespace before the command whose input is
being redirected, which is a non-starter.

} YAML uses `|` and `>` to start block scalars, that's why I used
} `|` above (`<<>` seems odd and may be confused with `<>`). Not
} sure why this should be a bad choice: `|` already has different
} meanings in different contexts

It seems a bad choice to me because of >| and >>| which have a very
different meaning.  If we were going to use either <| or <<| for some
special purpose, it feels as if there should be symmetry implied, as
with e.g. <& and >&.

Of course << and >> have already given up that sort of symmetry except
for one being input and one being output, so ...

This reminds me that both <<; and <<& also are currently bad syntax;
though "<<;" is probably an even worse choice than "<<|".  There is
at least precedent for combining one of "|" or "&" with redirection.

Messages sorted by: Reverse Date, Date, Thread, Author