There is still a lot of confusion regarding dword support (double quoted
words) in epic4, and the changes made recently to epic5.
I would like to summarize the issues at hand, and then present a modest
proposal for epic5's future behavior.
The problem
-----------
There are 46 functions in epic4 that support "word lists".
The problem comes is, when a "word list" contains a double quoted word,
does that count as one word or multiple words? Are the double quotes kept
or are they stripped away?
These are the functions
afterw beforew chngw cofilter
common copattern corfilter corpattern
diff findw findws fromw
getopt glob globi indextoword
insertw joinstr leftw match
maxlen midw notw numsort
numwords pattern pop prefix
push remw remws restw
revw rfilter rightw rmatch
rpattern shift sort splice
tow uniq unshift unsplit
word wordtoindex
Functions that are not on this list should not have changed behavior
between epic4 and epic5 on the basis of double quoted word support!
Some of these functions support double quoted words fully (findw, getopt,
match, maxlen, word), and some of them support double quoted words only
when /xdebug extractw is on (chngw, insertw, midw, notw), and some
functions support double quoted words, but strip the double quotes out
(joinstr, common, numsort, pattern), and some functions are *broken* when
you use double quoted words (afterw, beforew, fromw)
There is no rhyme or reason for why there are so many special cases.
This has just grown up over the course of epic's life and there has
never been a project to rationalize and normalize the behavior until now.
The proposal
------------
We will, by default, make all of the above functions, except for
getopt glob globi
not support double quoted words. That means, double quoted words have
no special meaning, and double quotes are considered regular old characters.
We will allow you, if you do /xdebug dword, to turn on full dword support
in all of the above functions. "Full support" is still a bit nebulously
defined, and may be subject to change. For the moment, it means if you
have a dword on the input, it will be a dword on the output. Dwords will
only count as 1 word.
We will change /xdebug extractw so it only affects the $* numeric expandos.
It will no longer have any effect upon built in functions or anything else.
This will allow you, the scripter, to determine
1) Whether you want dword support for $*
2) Whether you want dword support for function calls
on an independant basis. Right now, you can't sever these two without
toggling /xdebug extractw.
Remember, functions that are not on the above list are not affected by
this proposal (unless I made an inadvertant exclusion), and they should
behave the same in epic4 and epic5.
There you have it. Comments?
Jeremy
_______________________________________________
List mailing list
[email protected]
http://epicsol.org/mailman/listinfo/list