File: foreach.m4

package info (click to toggle)
m4 1.4-10
  • links: PTS
  • area: main
  • in suites: potato
  • size: 1,592 kB
  • ctags: 1,114
  • sloc: ansic: 10,411; makefile: 395; sh: 330; lisp: 243
file content (19 lines) | stat: -rw-r--r-- 613 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
divert(-1)
# foreach(x, (item_1, item_2, ..., item_n), stmt)
define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2', `$3')popdef(`$1')')
define(`_arg1', `$1')
define(`_foreach', 
	`ifelse(`$2', `()', ,
		`define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2), `$3')')')
# traceon(`define', `foreach', `_foreach', `ifelse')
divert
foreach(`x', `(foo, bar, foobar)', `Word was: x
')
# Something more complex, from Pierre Gaumond <gaumondp@ere.umontreal.ca>.
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