Sending it to ast-users because ast-developers doesn't let me subscribe.

Josh

---------- Forwarded message ----------
From: Josh Hurst <[email protected]>
Date: Fri, Jun 15, 2012 at 10:47 PM
Subject: Re: Re: Re: [ast-developers] RFE: Extend ksh93 printf %q to
accept modifiers
To: [email protected]


On Fri, Jun 8, 2012 at 5:33 PM, Lionel Cons
<[email protected]> wrote:
> On 8 June 2012 16:38, Clark WANG <[email protected]> wrote:
>> On Fri, Jun 8, 2012 at 10:06 PM, Dan Shelton
>> <[email protected]> wrote:
>>> On 30 May 2012 01:31, David Korn <[email protected]> wrote:
>>>> cc:  [email protected]  [email protected]  
>>>> [email protected]
>>>> Subject: Re: Re: Re: [ast-developers] RFE: Extend ksh93 printf %q to 
>>>> accept modifiers
>>>> --------
>>>>
>>>> I have added %(html)q and %(url)q to the next release.
>>>
>>> I think there was a misunderstanding for using %(...)q for egrep
>>
>> There's not a standard or specification for %(...)q so there's no
>> misunderstanding here. I personally like the way %(ere)q and
>> %(pattern)q work. :)
>>
>>> expressions and similar things. The goal was to QUOTE strings that
>>> they retain any all characters in the target format in their literal
>>> meaning and not to CONVERT them like the current implementation for
>>> %(ere)q does.
>>> As an example, %(ere)q should quote special characters like (, ), [,
>>> ], {, }, \ with a preceding backslash so they are retain their literal
>>> meaning:
>>>
>>> printf '%(ere)q' 'hello(world)'
>>> hello\(world\)
>>>
>>> %(csv)q, %(html)q and %(url)q work as expected but %(pattern)q and
>>> %(ere)q need to be changed to just quote the values and not convert
>>> them into something different.
>>
>> They're not converted to something different. They're converted to
>> another form which means the same.
>
> Clark, %q means 'quoting', not conversion. So I agree with Dan that
> from the spirit of naming plain quoting actions belong into %()q while
> whole conversions into a completely different pattern syntax should
> fall into something like %()C.

I agree with Lionel on that. Besides, we have %R/%P for that. I like
the Olga's original proposal because it made it easy to insert file
names (or other strings) into a extended regular expression pattern
without worrying that they change the meaning or cause corruptions
because their characters were not quoted.
As example: I have two files (from Windows) with the name 'Document
copy(1).doc' and 'Document copy(2).doc'. If %(ere)q would work as I
would expect it it would allow to create a OR pattern simply by doing
a printf "(%(ere)q|%(ere)q)" 'Document copy(1).doc' 'Document
copy(2).doc' and get the properly quoted '(Document
copy\(1\)\.doc|Document copy\(2\)\.doc)' from that.

So back to the original proposal from Olga:
---------------
%(egrep)q convert string into a literal accepted plainly by egrep
(e.g. things like '[', ']', '(', ')' etc. are quoted)
%(grep)q convert string into a literal accepted plainly by grep (e.g.
things like '[', ']', etc. are quoted)
%(agrep)q, %(xgrep)q convert string into a literal accepted plainly by
grep -X/-A (e.g. things like '[', ']', '(', ')' etc. are quoted)
---------------
Can we get %()q changed that egrep/grep/agrep quote the strings as
Olga proposed for the next beta, please? IMO this is more practical
than just having new names for %R/%P

Josh

_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to