Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Patterns quoting in subscript (was: Re: PATCH: Assorted parameter stuff)
- X-seq: zsh-workers 14005
- From: Andrej Borsenkow <Andrej.Borsenkow@xxxxxxxxxxxxxx>
- To: <zsh-workers@xxxxxxxxxx>
- Subject: Patterns quoting in subscript (was: Re: PATCH: Assorted parameter stuff)
- Date: Tue, 17 Apr 2001 22:30:21 +0400 (MSD)
- In-reply-to: <1010415080610.ZM10250@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
On Sun, 15 Apr 2001, Bart Schaefer wrote:
> The main point of this patch is to address Andrej's message from last August
> ("SourceForge bug id 104052 - case study") and related issues with parsing
> array subscripts. Some other stuff got tweaked in passing.
>
> I'll hold off committing this until a couple of you have applied it and say
> it seems OK. The "make check" tests all pass for me, at least (and it was
> the completion tests, rather than the parameter tests, that gave it the best
> workout).
>
At least one thing has changed (but I consider behaviour broken in
anyway):
bor@itsrm2:~%> foo=(a '?' '\?')
bor@itsrm2:~%> print -r $foo[(r)?]
a
bor@itsrm2:~%> print -r $foo[(r)\?]
?
bor@itsrm2:~%> print -r $foo[(r)\\?]
?
bor@itsrm2:~%> print -r $foo[(r)\\\?]
?
without patch you get:
bor@itsrm2:~%> foo=(a '?' '\?')
bor@itsrm2:~%> print -r $foo[(r)?]
a
bor@itsrm2:~%> print -r $foo[(r)\?]
?
bor@itsrm2:~%> print -r $foo[(r)\\?]
?
bor@itsrm2:~%> print -r $foo[(r)\\\?]
\?
bor@itsrm2:~%> print -r $foo[(r)\\\\?]
\?
bor@itsrm2:~%> print -r $foo[(r)\\\\\?]
\?
etc etc
Both are broken. Without patch you have at least some (albeit completely
unclear) possibility to quote patterns in subscript - with patch even this
one is gone.
I think, we have to decide on how quoting is actually done and finally
implement it. I have very strong inclination to not reinvent te whell and
simply use current quoting rules *including* $~foo (that as response to
another message). We still need special treatment for patterns inside
double quotes (else no subscripting is possible) - with this patch parsing
of subscription is already done in seperate function so it should be
possible.
Suggestion is something like
$foo[()pattern] - is parsed just like a "normal" globbing pattern, taking
in account any quoting. I.e. in $foo[(r)\*$bar] neither ``*'' nor contents
of $bar is taken as pattern.
Special consideration is needed for double quotes. Because normally
"$foo[(r)\?]" is parsed as *two* characters - ``\'' and ``?'', to allow
quoting inside double-quotes extension of quoting rules is needed. I.e.
``\'' should be allowed to quote pattern metacharacters inside of
subscript. I am not sure what impact it possibly have on compatibility ...
OTOH if foo is array, zsh will always parse "$foo[*]" differently from
/bin/sh even in compatibility mode.
-andrej
Messages sorted by:
Reverse Date,
Date,
Thread,
Author