On 04 Oct 2015, at 12:46 PM, Rainer Jung <rainer.j...@kippdata.de> wrote:
>> But it must not be too complicated. We don't want an unreadable mess >> like the sh/bash string manipulation functions. +1. > Yes, I agree. When starting to think closer, I noticed that the string mode > currently only supports a syntax that is pretty different from the boolean > mode and is much more limited. In that mode everything is a string except it > is marked via %{XXX}, in which case XXX is a variable name, except XXX is > AAA:BBB in which case it is AAA("BBB"). > > So AFAIK we don't support functions with more than one argument in string > mode and my naive idea of using "STRING =~ s/PATTERN/REPLACEMENT/FLAGS" runs > into the problem, that we currently don't support operators like "=~" etc. in > string mode. > > So I wonder whether it would be useful to allow for a more general mode which > would depending on operators or functions handle the argument and result as > strings or booleans using auto conversion between them where needed. Of > course in that mode verbatim strings would need proper quoting (unlike pure > string mode in which everything by default is a verbatim string). We could > then even support > > BOOLEXPR ? STRINGEXPR1 : STRINGEXPR 2 > > For compatibility that generalized mode would probably need a mode > differentiator syntax for compatibility reasons in 2.4 but could be the > default mode in trunk. Something like your "%!" prefix. How about a regex function? The single argument could be “s/PATTERN/REPLACEMENT/FLAGS”. Regards, Graham —