CVSROOT: /sources/m4 Module name: m4 Changes by: Eric Blake <ericb> 06/10/21 15:23:57
Index: examples/foreach.m4 =================================================================== RCS file: /sources/m4/m4/examples/foreach.m4,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- examples/foreach.m4 24 Nov 2000 01:31:33 -0000 1.2 +++ examples/foreach.m4 21 Oct 2006 15:23:56 -0000 1.3 @@ -1,29 +1,8 @@ -divert(-1) +divert(`-1') # foreach(x, (item_1, item_2, ..., item_n), stmt) -define(`foreach', `pushdef(`$1', `')_foreach($@)popdef(`$1')') -define(`_arg1', ``$1'') -define(`_foreach', - `ifelse($2, `()', , - `define(`$1', `_arg1$2')$3`'_foreach(`$1', `(shift$2)', `$3')')') - -# traceon(`define', `foreach', `_foreach', `ifelse') - -define(a, 1) -define(b, 2) -define(c, 3) -divert -foreach(`x', `(foo, bar, foobar)', `Word was: x -') - -# Quote torture from Akim Demaille <[EMAIL PROTECTED]> -foreach(`x', `(`a', `(b', `c)')', `Word was: x -') - -# Something more complex, from Pierre Gaumond <[EMAIL PROTECTED]>. -define(`case', ` $1) - $2=" -$1";; -')dnl -define(`_cat', `$1$2')dnl -`case' "$1" in -foreach(`x', ((a, vara), (b, varb), (c, varc)), `_cat(`case', x)')dnl -esac +# parenthesized list, simple version +define(`foreach', `pushdef(`$1')_foreach($@)popdef(`$1')') +define(`_arg1', `$1') +define(`_foreach', `ifelse(`$2', `()', `', + `define(`$1', _arg1$2)$3`'$0(`$1', (shift$2), `$3')')') +divert`'dnl
