home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / m4-1.4-src.tgz / tar.out / fsf / m4 / examples / foreach.m4 < prev    next >
Text File  |  1996-09-28  |  613b  |  20 lines

  1. divert(-1)
  2. # foreach(x, (item_1, item_2, ..., item_n), stmt)
  3. define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2', `$3')popdef(`$1')')
  4. define(`_arg1', `$1')
  5. define(`_foreach', 
  6.     `ifelse(`$2', `()', ,
  7.         `define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2), `$3')')')
  8. # traceon(`define', `foreach', `_foreach', `ifelse')
  9. divert
  10. foreach(`x', `(foo, bar, foobar)', `Word was: x
  11. ')
  12. # Something more complex, from Pierre Gaumond <gaumondp@ere.umontreal.ca>.
  13. define(`case', `  $1)
  14.     $2=" -$1";;
  15. ')dnl
  16. define(`_cat', `$1$2')dnl
  17. `case' "$1" in
  18. foreach(`x', ((a, vara), (b, varb), (c, varc)), `_cat(`case', x)')dnl
  19. esac
  20.