Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: 3.1.5 - (Sven) Case-insensitive globbing
- X-seq: zsh-workers 4506
- From: "Zefram" <zefram@xxxxxxxxx>
- To: pws@xxxxxxxxxxxxxxxxx (Peter Stephenson)
- Subject: Re: PATCH: 3.1.5 - (Sven) Case-insensitive globbing
- Date: Mon, 2 Nov 1998 18:06:32 +0000 (GMT)
- Cc: zsh-workers@xxxxxxxxxxxxxxx
- In-reply-to: <9811021707.AA24379@xxxxxxxxxxxxxxxxx> from "Peter Stephenson" at Nov 2, 98 06:07:41 pm
Peter Stephenson wrote:
>I've got two possible implentations to propose (I have them both
>working, the differences aren't so great). Both are based on the way
>it's done in perl 5: the closure operator, in our case #, at the
>start of a group signifies that flags follow. This doesn't clash with
>any existing syntax. Obviously you need EXTENDED_GLOB set.
Good. I'd considered this extension mechanism, but for some reason
dismissed it as impractical -- maybe I was confused by the dependence
on EXTENDED_GLOB.
>Syntax 1 Syntax 2
>(#ifoo)bar ((#i)foo)bar match FOObar FoObar fOobar, not FOOBAR
>bar(#ifoo) bar(#i)foo same with the bits the other way round
>(#lfooBAR) (#l)fooBAR match FOOBAR FoOBAR fOoBAR, not foobar
>(#ifoo(#cbar)) (#i)foo(#c)bar same as first example; #c negates i or l
Let's go for the more Perl-like syntax. I think your syntax 1 is slightly
more logical, but the difference is minimal so I think it would be wise
to follow precedent.
>#s (for significant) could be an alternative to #c; #l corresponds to
>Sven's (f) qualifier, i.e. only lower case letters in the pattern
>match case-insensitively in the target string.
If there were just two senses to the flag, I'd argue for #i and #I (#I
being the opposite of #i). In this case perhaps #i, #l and #I could be
used. I'd prefer a better mnemonic for the one-way case insensitivity,
though.
> The only real bind with this is with KSH_GLOB, where the
>second set of examples would have to become @(@(#i)foo)bar,
>@(#l)fooBAR and @(#i)foo@(#c)bar.
Considering the circumstances under which KSH_GLOB will be used,
I don't think that making it pleasant to mix with EXTENDED_GLOB is a
major consideration.
>shell doesn't need the @ if it comes across the left parenthesis
>before anything else, so you can drop the first @ in each case, but
>this is deliberately undocumented.)
It's not explicitly documented, but it's intentional, and should be
derivable from the documentation. Basically, KSH_GLOB doesn't turn off
the effects of "("; it just makes certain characters special immediately
before a "(".
>One point about this is that you need to turn on case-insensitivity at
>any segment of the path where you need it:
I'm rather dubious about this. () grouping doesn't have to be on a
component-by-component basis; I think these modifiers' effects should
last up to the end of the textual group, even if this spans multiple
pathname components. It's the principle of least surprise.
-zefram
Messages sorted by:
Reverse Date,
Date,
Thread,
Author