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

Re: Capitalization tuning



2008/8/31  <henman@xxxxxxxxxxxxxxxx>:
>
> In my audio filename normalization process, i.e., makeing the filenames be compliant to a convertion, I need to capitalize all words.
>
> I used the parameter expansion flag (C) to capitalize filenames
>
>
> In the manual it says
> "C Capitalize the resulting words. 'Words' in this case refers to sequences of alphanumeric characters separated by non-alphanumerics, not to words that result from field splitting."
>
> The problem with the current operation of the Capitalization function is that it capitalizes the first letter of conjunction tails as well.
>
> For example:
>     $ CONJUNCT="I'll" && echo ${(C)CONJUNCT}
>     I'Ll
>     $CONJUNCT="They've" && echo ${(C)CONJUNCT}
>     They'Ve
>
> and so on.
>
> My question is can I make the capitalization function think "'" is a word character?
> By say, chaning the system parameter WORDCHARS or by specifying some other flag or separater?
>    like:
>         W:sep:   or
>         s:string: or
>         by changing IFS temporarily  or
>         the w and s:string: subscript flags
>  etc.?
>
>
> I noticed that there is no modifer for capitalization, only for l)owercase and u)pperase.  So the parameter expansion flag must be used to capitalize or so I gather from reading the "April 2, 2008" dated manual.
>
>
> I could do a brute force checking for all known conjunctions, but I'd prefer a more elegant procedure.
>
> Thanks for any advice.
>
> regards
>   d. henman

This is possibly not the best, or even a good, way, but it seems to work:
${${(C)${CONJUNCT//\'/\'1}}//\'1/\'}

-- 
Mikael Magnusson



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